Sql 将select上的datetime与date only进行比较
我想根据他们的日期是否共享来比较两个日期时间。 这项工作:Sql 将select上的datetime与date only进行比较,sql,sql-server,Sql,Sql Server,我想根据他们的日期是否共享来比较两个日期时间。 这项工作: SELECT * FROM XXX WHERE CAST(LoadDateLAG AS DATE) = CAST(LoadDateLEAD AS DATE) 但是,我想实际获得一个额外列的结果: SELECT CAST(LoadDateLAG AS DATE) = CAST(LoadDateLEAD AS DATE) , * FROM XXX 后者不起作用,因为SQLServer抱怨语法无效。 有什么建议吗 结果如
SELECT *
FROM XXX
WHERE CAST(LoadDateLAG AS DATE) = CAST(LoadDateLEAD AS DATE)
但是,我想实际获得一个额外列的结果:
SELECT
CAST(LoadDateLAG AS DATE) = CAST(LoadDateLEAD AS DATE)
, *
FROM XXX
后者不起作用,因为SQLServer抱怨语法无效。
有什么建议吗
结果如下:
LoadDateLAG | LoadDateLEAD | (LoadDateLAG = LoadDateLEAD) [as bit]
我需要这个功能来压缩历史记录表
-删除不必要的条目(例如,每天只保留最后一个条目)。您可以使用:
如果您还想显示日期
值(而不是日期时间)
,您可以使用以下选择
:
SELECT
CAST(LoadDateLAG AS DATE) AS LoadDateLAG,
CAST(LoadDateLEAD AS DATE) AS LoadDateLEAD,
CASE WHEN CAST(LoadDateLAG AS DATE) = CAST(LoadDateLEAD AS DATE) THEN 1 ELSE 0 END AS isDateEquals
FROM XXX
-- WHERE CAST(LoadDateLAG AS DATE) = CAST(LoadDateLEAD AS DATE)
SELECT
LoadDateLAG, LoadDateLEAD,
CASE WHEN CAST(LoadDateLAG AS DATE) = CAST(LoadDateLEAD AS DATE) THEN CAST(LoadDateLAG AS DATE) ELSE NULL END AS equalsDate
FROM XXX
-- WHERE CAST(LoadDateLAG AS DATE) = CAST(LoadDateLEAD AS DATE)
如果您想显示日期
值(而不是1或0),如果相等,可以使用以下选择
:
SELECT
CAST(LoadDateLAG AS DATE) AS LoadDateLAG,
CAST(LoadDateLEAD AS DATE) AS LoadDateLEAD,
CASE WHEN CAST(LoadDateLAG AS DATE) = CAST(LoadDateLEAD AS DATE) THEN 1 ELSE 0 END AS isDateEquals
FROM XXX
-- WHERE CAST(LoadDateLAG AS DATE) = CAST(LoadDateLEAD AS DATE)
SELECT
LoadDateLAG, LoadDateLEAD,
CASE WHEN CAST(LoadDateLAG AS DATE) = CAST(LoadDateLEAD AS DATE) THEN CAST(LoadDateLAG AS DATE) ELSE NULL END AS equalsDate
FROM XXX
-- WHERE CAST(LoadDateLAG AS DATE) = CAST(LoadDateLEAD AS DATE)
演示:
SQL Server 2012+
SELECT IIF(CAST(LoadDateLAG AS DATE) = CAST(LoadDateLEAD AS DATE),1,0),* FROM XXX
你期望的结果是什么?你能举个例子吗?你希望在额外的专栏中看到什么?从你失败的尝试中,你的意图并不清楚。