【问题标题】:date & time difference format日期和时差格式
【发布时间】:2014-12-15 07:29:45
【问题描述】:

我有一个登录/注销系统来计算员工的总工作时间。我的问题是分钟的日期和时间差的格式。

例子:

如果用户登录 8:00 AM 并退出 6:30 PM,总数应该是 10.50 但我的 SQL输出为 10 hrs and 30 mins。我知道公式(应该是30mins/60 = 50),但我不知道应该把股息(/60)放在我的 SQL 查询上。(see below my SQL Code)

SQL 代码:

SELECT *,CAST(Datediff(HOUR, 0, logout_time - login_time) + 
         Cast(Datediff(MINUTE, 0, logout_time - login_time) - 
             (Datediff(HOUR, 0, logout_time - login_time) * 60 ) AS DECIMAL) / 100 AS Decimal(18,2)) AS [TotalHrs_Worked]
FROM table_DTR
WHERE CONVERT(VARCHAR(10),log_date, 101) BETWEEN '09/01/2014' AND '11/30/2014'

【问题讨论】:

  • DATEDIFF(分钟,注销时间,登录时间) / 60
  • @adrianm:我也试过了。但它没有给我运气
  • SELECT DATEDIFF(minute, '20141215 08:00:00', '20141215 18:30:00') / 60.0 给我10.50000
  • 你试过我的sql了吗?使用你的代码?

标签: sql-server vb.net datetime


【解决方案1】:

如果您只是简单地将一对日期时间值之间的分钟数乘以 60.0(带有小数位,因此它会产生带有十进制值的结果),这应该没有问题:

运行这个例子:

DECLARE @start DATETIME = '2014-12-15 08:00:00'
DECLARE @end DATETIME = '2014-12-15 18:30:00'

SELECT DATEDIFF(minute, @start, @end)/60.0 AS HoursWorked

这将产生:

10.50

您不需要像在 SQL 中那样将其分解为几分钟和几小时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 2013-11-22
    • 2011-09-25
    相关资源
    最近更新 更多