我试图在SQL中将5整数时间转换为实时。代码如下,输出样品行也在下面。我希望最终做的是减去结束时间和开始时间以获得总时间,然后将它们加在一起并创建一个触发器,说明当员工达到30,35和40小时标记时,发送电子邮件以发出警报有人。这是为加班目的。
SELECT empl_numb
,start_time
,end_time
,dateadd(d, trans_rdat + 5843, 0) AS theday
FROM ei30
WHERE empl_numb = '12345' -- and DATEADD(d, TRANS_RDAT + 5843 ,0)
AND shift_break_code NOT LIKE 'L'
AND shift_break_code NOT LIKE 'S'
ORDER BY dateadd(d, trans_rdat + 5843, 0) DESC;
结果:
EMPL_NUMB START_TIME END_TIME TheDay
12345 01257 01714 2013-12-12 00:00:00.000
答案 0 :(得分:1)
使用适当的数据类型存储日期和时间通常是一种好习惯。
您可以对时间部分使用DATEADD()
和模数除法:
DECLARE @time INT = 1234
SELECT DATEADD(minute,@time%100,DATEADD(hour,(@time/100),CAST('' AS TIME)))
编辑:因为它实际上是CHAR(5)
,您可以使用SUBSTRING()
和连接:
DECLARE @time CHAR(5) = '01234'
SELECT CAST(SUBSTRING(@time,2,2)+':'+RIGHT(@time,2) AS TIME)
答案 1 :(得分:0)