如何在sql中找到两个时间值之间的差异
我目前正在编写一个C#应用程序,用户可以在其中记录每天的登录和注销时间。如何在sql中找到两个时间值之间的差异,sql,sql-server,Sql,Sql Server,我目前正在编写一个C#应用程序,用户可以在其中记录每天的登录和注销时间。 时间存储在数据类型为time(0)的表中,因此时间显示为09:00:00。 存储数据的列是 登录,注销 我想做的是显示一个用户在那天工作了多长时间,例如在09:00:00签到在17:00:00签退。这里的差别是8小时。我试过研究tish,但没有弄明白。我已经为此尝试了下面的方法 如何在SQL语句中写入注销减去签入?您可以使用datediff(): 如果您希望将其作为小时,我建议使用分数小时: select datediff
时间存储在数据类型为time(0)的表中,因此时间显示为09:00:00。
存储数据的列是 登录,注销 我想做的是显示一个用户在那天工作了多长时间,例如在09:00:00签到在17:00:00签退。这里的差别是8小时。我试过研究tish,但没有弄明白。我已经为此尝试了下面的方法 如何在SQL语句中写入注销减去签入?您可以使用
datediff()
:
如果您希望将其作为小时,我建议使用分数小时:
select datediff(minute, sign_in, sign_out) / 60.0 as hours_inside
在这里,您可以尝试以下查询
SELECT CONVERT(VARCHAR(8), DATEADD(SECOND, DATEDIFF(SECOND,@sign_in, @sign_out),0), 108) as ElapsedTime
您将获得elapsedtime
作为hour:minute:second
您可以试试这个
SELECT DATEDIFF(HH, '09:00:00', '17:00:00') AS TotalDiff;
要了解有关
Datediff
的更多信息,请按照or.了解您使用的是什么DBMS?SQL server管理研究发现您缺少了一些关键信息—此人的工作日期。当一个人的工作时间从午夜前开始到午夜后结束时会发生什么?仔细考虑你的假设和模式。嗨,戈登,我发现登录和注销都有一个错误“无效列名”,但我把这些列命名为?@Johnathan post-your-SQL。我怀疑您缺少来自语句的。没有理由转换为varchar。style 108也不是可变长度。我使用convert函数从日期开始获取小时:分钟:秒。108样式返回相同的结果
SELECT DATEDIFF(HH, '09:00:00', '17:00:00') AS TotalDiff;