【问题标题】:Conversion failed while converting datetime转换日期时间时转换失败
【发布时间】:2016-07-20 06:28:39
【问题描述】:

查询:

UPDATE dbo.FinalExtract
SET WEWE = CASE 
              WHEN Wait_time <= '24' 
                 THEN CONVERT(varchar, dateadd(hour, -24, Wait_time)) 
                 ELSE CONVERT(varchar, dateadd(hour, +24, Wait_time)) 
           END

这是我想要的,但我收到了转换错误

让我告诉你wait_time

wait_time = CONVERT(VARCHAR, DATEDIFF(Hour, time_created, time_responded) % 24) + '.'
        + CONVERT(VARCHAR, DATEDIFF(minute, time_created, time_responded) % 60)

输出是:19.07

如果输出值小于 24 小时,我想添加 +24 小时,如果输出值超过 24 小时,则添加额外的 24 小时。

我试过了

UPDATE dbo.FinalExtract
SET WEWE = CASE 
              WHEN Wait_time <= '24' 
                 THEN CONVERT(varchar, dateadd(hour, -24, Wait_time)) 
                 ELSE CONVERT(varchar, dateadd(hour, +24, Wait_time)) 
           END

但它不起作用我收到转换错误。

【问题讨论】:

  • 请发布您的表格架构、示例数据和预期结果
  • 是的,我已经上传了屏幕截图...我想更新列 WEWE 值
  • 请朋友们,如果我执行此查询,我会遇到错误.....Msg 241,Level 16,State 1,Line 2 从字符串转换日期和/或时间时转换失败。
  • 为什么要添加 +/- 24 ?,它是涵盖全天的日期范围吗?分享错误的屏幕截图或发送错误文本。
  • 是的,兄弟,这背后的逻辑是......当在 time_created 中,time_responded 时间段落在周末,然后在 wait_time 上增加 24 小时,如果它在工作日,则减去 24 小时

标签: sql sql-server datetime


【解决方案1】:

时间部分应该有一个冒号。你的 wait_time 应该是

wait_time = CONVERT(VARCHAR, DATEDIFF(Hour, time_created, time_responded) % 24) + ':'
        + CONVERT(VARCHAR, DATEDIFF(minute, time_created, time_responded) % 60)

【讨论】:

  • 我这样做了...我正在获取 varchar 格式的 wait_time,因为我无法执行此查询... UPDATE dbo.FinalExtract SET WEWE = case when Wait_time
  • 我试过这个............更新 dbo.FinalExtract SET WEWE = IIF (wait_time
【解决方案2】:

我认为这会对你有所帮助:

Declare @timeCreated datetime='2016-06-09 12:26:12.000'
Declare @timeresponded datetime='2016-06-09 14:28:12.000'
declare @waittime datetime;
set @waittime=(select case when DateDiff(hh,@timeCreated,@timeresponded)   <   24 then DateDiff(hh,@timeCreated,@timeresponded) + 24else DateDiff(hh,@timeCreated,@timeresponded) end)
update dbo.finalextract set wewe=@waittime

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    相关资源
    最近更新 更多