【问题标题】:I use DATEDIFF to subtract my time but I got 0 answer every time I execute我使用 DATEDIFF 来减去我的时间,但每次执行时我得到 0 答案
【发布时间】:2016-09-12 23:57:50
【问题描述】:

我的sql语句是这样的:

SELECT DATEDIFF(hh, TimeIn,OutTime ) AS Hours_Rendered
FROM DTR_TimeRecord

【问题讨论】:

标签: sql-server sql-server-2008 datediff


【解决方案1】:

请注意,DATEDIFF 将字符串文字隐式转换为 datetime2 类型。这意味着当日期作为字符串传递时,DATEDIFF 不支持格式 YDM。您必须将字符串显式转换为 datetime 或 smalldatetime 类型才能使用 YDM 格式。

参考:https://msdn.microsoft.com/en-us/library/ms189794.aspx

【讨论】:

    【解决方案2】:

    您的 TimeIn 和 OutTime 必须是同一小时。喜欢

    TimeIn : '2016-05-17 11:31:33.190'
    OutTime: '2016-05-17 11:35:41.790'
    
    select DATEDIFF(HH, '2016-05-17 11:31:33.190', '2016-05-17 11:35:41.790' )
    

    上面的查询总是给你0。

    但假设您的 OutTime 是 '2016-05-17 12:35:41.790'

    然后

    select DATEDIFF(HH, '2016-05-17 11:31:33.190', '2016-05-17 12:35:41.790' )
    

    上面的查询会给你1。

    【讨论】:

    • 谢谢我已经想通了,我想以这种格式显示答案 HH:MI:SS 我该怎么做?
    【解决方案3】:

    这肯定会对你有所帮助

     SELECT convert(TIME,dateadd(ms,DateDiff(ss, TimeIn, OutTime )*1000,0),114) AS Hours_Rendered
     FROM DTR_TimeRecord
    

    【讨论】:

      猜你喜欢
      • 2018-10-18
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 2023-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      相关资源
      最近更新 更多