【发布时间】:2019-04-27 06:53:59
【问题描述】:
我确信这个查询是正确编写的,但我继续将“Null”插入到预期的列中。我的开始和结束日期列是 datetime 并包含日期,所以我不确定为什么这不执行 datediff 计算和更新列。
我是否做错了容易被忽视的事情?
DECLARE @X INT
UPDATE MyTable
SET @X = DATEDIFF(s, Start_Date, End_Date)
,Column1 = CASE
WHEN Start_Date <> NULL
AND End_Date <> NULL
THEN (
SELECT CONVERT(VARCHAR(10), (@x / 86400)) + ' Days ' + CONVERT(VARCHAR(10), ((@x % 86400) / 3600)) + ' Hours ' + CONVERT(VARCHAR(10), (((@x % 86400) % 3600) / 60)) + ' Minutes '
)
ELSE NULL
END
样本数据: 开始日期 = 2018-08-08 00:00:00.000 结束日期 = 2020-08-08 00:00:00.000
(这是我在真实数据库中使用的实际数据)
【问题讨论】:
-
使用
is not null而不是<> null -
我应该补充一点,我已经尝试过这个,结果相同。我只是将 换成 IS NOT,但我仍然没有看到计算适用。
-
如果您发布示例数据会更好。
-
这有帮助吗?在代码下添加。这是我正在使用的字面两个日期来使此查询起作用。这两列都包含该数据。很明显,它们不是空列。所以,这就是为什么我想知道为什么没有发生计算。
标签: tsql