【问题标题】:Conversion failed when converting date and/or time from character string,when convert hours从字符串转换日期和/或时间时转换失败,当转换小时
【发布时间】:2015-07-12 09:37:02
【问题描述】:

我得到以下异常:

从字符转换日期和/或时间时转换失败 字符串

在此声明:

 select  CAST(RIGHT('0' + CAST(overtimeHours  as varchar(2)), 2) + ':00:00' As Time) 
 from #GPilot;

注意:这发生在overtimeHours = 24

【问题讨论】:

    标签: sql-server stored-procedures casting sql-server-2012


    【解决方案1】:

    那是因为“24:00:00”不是有效时间。使用模数截断:

    SELECT CAST(RIGHT('0' + CAST((overtimeHours % 24) AS varchar(2)), 2) + 
      ':00:00' As Time) FROM #GPilot;
    

    【讨论】:

      【解决方案2】:

      没有24:00:00 小时。您应该测试它是否为 24,如果是,则返回 00:00:00 并在日期部分添加一天(如果您有日期部分),或者更改为 23:59:59,或者像在 Amit 的 answer 中一样简单地使用模数。正确的做法取决于您在问题中没有分享的更广泛的背景。

      【讨论】:

        猜你喜欢
        • 2012-04-17
        • 2017-12-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多