SQL 根據上下班時間,統計加班時間

2022-05-09 23:24:55 字數 5268 閱讀 5117

1樓:匿名使用者

create table tt(

id int primary key identity(1,1),name varchar(20),

time1 datetime,

time2 datetime

)insert tt values('zhangsan','2011-03-20 08:30:00.000','2011-03-21 07:30:00.000')

insert tt values('lisi','2011-03-20 08:30:00.

000','2011-03-21 05:30:00.

000') datetime格式包含年月日,不正好符合計算兩個時間的分鐘差...' 17:30'這個字串前面要加個空格不然不能隱性轉換為datetime格式select name,sum(datediff(mi,convert(varchar(10),time1,120)+' 17:

30',time2)/60.0) from tt group by name

2樓:匿名使用者

可以通過精確到分鐘來查詢比如:select datediff(mi,'2011-3-24 8:30:

00', cast( convert( nvarchar,getdate(),120)as datetime))

group by userid那麼得出 從上班開始到當前時間的乙個差值一天從早上8點30到17點30下班 那麼就是9個小時, 9*60 =540分鐘你將這個時間減上面查詢出的時間差,如果是負數,就是他加班的分鐘數了.分鐘知道了,小時就不用說了吧~~~~~~~

sql 統計每日上班打卡和下班打卡語句 50

3樓:

能不能來乙份資料 這麼憑空想 或者構造資料 太麻煩 一些代表性的資料 就行。還有問題要描述清楚 :1)各 取 4筆還是各 去 4 筆,少了為空,多了呢?取時間早的還是時間晚的。

2) 沒人每天是什麼意思

3) 不經過除錯 誰也不能保證自己寫出的語句是100%正確的,給點代表性的資料。

4樓:

select a1.card_no,

a1.atte_time as "上班時間",

a2.atte_time as "上班時間1",

a3.atte_time as "上班時間2",

a4.atte_time as "上班時間3",

b1.atte_time as "下班時間",

b2.atte_time as "下班時間1",

b3.atte_time as "下班時間2",

b4.atte_time as "下班時間3"

from (select card_no, atte_time

from (select card_no,

atte_time,

row_number() over(partition by card_no order by atte_time) as in_id

from attetime

where doorinout = 1) t

where t.in_id = 1) a1

left join (select card_no, atte_time

from (select card_no,

atte_time,

row_number() over(partition by card_no order by atte_time) as in_id

from attetime

where doorinout = 1) t

where t.in_id = 2) a2

on a1.card_no = a2.card_no

left join (select card_no, atte_time

from (select card_no,

atte_time,

row_number() over(partition by card_no order by atte_time) as in_id

from attetime

where doorinout = 1) t

where t.in_id = 3) a3

on a1.card_no = a3.card_no

left join (select card_no, atte_time

from (select card_no,

atte_time,

row_number() over(partition by card_no order by atte_time) as in_id

from attetime

where doorinout = 1) t

where t.in_id = 4) a4

on a1.card_no = a4.card_no

full join (select card_no, atte_time

from (select card_no,

atte_time,

row_number() over(partition by card_no order by atte_time desc) as out_id

from attetime

where doorinout = 0) t

where t.out_id = 1) b1

on a1.card_no = b1.card_no

left join (select card_no, atte_time

from (select card_no,

atte_time,

row_number() over(partition by card_no order by atte_time desc) as out_id

from attetime

where doorinout = 0) t

where t.out_id = 2) b2

on a1.card_no = b2.card_no

left join (select card_no, atte_time

from (select card_no,

atte_time,

row_number() over(partition by card_no order by atte_time desc) as out_id

from attetime

where doorinout = 0) t

where t.out_id = 3) b3

on a1.card_no = b3.card_no

left join (select card_no, atte_time

from (select card_no,

atte_time,

row_number() over(partition by card_no order by atte_time desc) as out_id

from attetime

where doorinout = 0) t

where t.out_id = 4) b4

on a1.card_no = b4.card_no

投入驗證資料如下:

執行結果如下:

5樓:逸如楓

這是在oracle資料庫下做的,不知道你是什麼資料庫,給你提供一下思路

select

card_no,

attr_date,

to_char(atte_time,'hh24:mi')tim,

doorinout,

rnfrom (

select

card_no,

attr_date,

atte_time,

doorinout,

row_number() over(partition by card_no,attr_date,doorinout order by atte_time asc) rn

from(

select

card_no,

(case

when doorinout=1

then to_date(to_char(atte_time,'yyyy-mm-dd'),'yyyy-mm-dd')

when (doorinout=0 and to_number(to_char(atte_time,'hh24'))<3)

then (to_date(to_char(atte_time,'yyyy-mm-dd'),'yyyy-mm-dd')-1)

else to_date(to_char(atte_time,'yyyy-mm-dd'),'yyyy-mm-dd')

end)attr_date,

atte_time,

doorinout

from attetime

) tmp order by card_no,atte_time asc,doorinout desc

) where rn < 5

sql中時間從晚上21點開始算做加班怎麼實現

6樓:今年第一次

把時間都轉換成時間戳啊 int型就可以直接判斷了嘛 大於指定的值 不就是加班了

sql中時間從晚上21點開始算做加班怎麼實現

7樓:匿名使用者

只要在sql查詢時,將等於或超過21點的記錄查詢出來即可。

sql中怎麼統計工作日出勤情況

8樓:匿名使用者

1.你還得有張日期表,規定一年365天哪天是週末,哪天是節假日,也就是日期型別(其實就是日曆)

2.出勤表中日期和日期表中的日期連線根據日期型別就知道哪天是節假日哪天是正常上班時間了

3.曠工天數應該就是出勤表中上班簽到時間或者下班簽到時間為空的話就算曠工了

4.休息日加班天數就是出勤表和日期表連線,日期型別是休息日,並且上班簽到和下班簽到時間都不為空了

總之,有張日期表什麼都能檢索出來了

9樓:眾口說車

這個不是簡單的sql能獨立完成的!!!

你可能還需要乙個前端!!

當然你可以用手工把你的資料輸入,但資料量實在太大。所以,沒辦法給你幫助!!

10樓:匿名使用者

你至少給個詳細的吧。比如:休息日加班是否應該有個週末的標識,加班時間段是否有個限制。我什麼不知道也沒辦法寫啊。我不能再去幫你算那天是週六週日吧?

公司上下班時間,一般公司的上下班時間是什麼?

有地區差異,中部城市一般和企事業單位同步。大城市會晚一些,因為交通原因。像新疆一般比其他地方晚2個小時。一般公司都是9 00 18 00 中午休息乙個半小時12 00 13 30 具體看各公司。第三十六條。國家實行勞動者每日工作時間不超過八小時 平均每週工作時間不超過四十四小時的工時制度。擴充套件材...

快遞員晚上幾點下班,快遞上下班時間

上午八點上班,但是並不是一上班就會去發快件的,他們還要等當天的送件車把快件送到快遞公司然後再把快件分到收件人的手中。下午六點下班。 足球新翻官 一般是六點之前。在廣州可能遲一些。 柏彤 一般在10 30左右 一般早上8點開始送件我這邊最晚到六點半,這個都是不太一樣的但不會差距太大的。這些快遞都是以個...

國稅局節假日上班嗎,稅務局上下班時間是?

辦公廳關於2014年 部分節假日安排的通知 國辦發明電 2013 28號 各省 自治區 直轄市人民 各部委 各直屬機構 經 批准,現將2014年元旦 春節 清明節 勞動節 端午節 中秋節和國慶節放假調休日期的具體安排通知如下。一 元旦 1月1日放假1天。二 春節 1月31日至2月6日放假調休,共7天...