Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将select上的datetime与date only进行比较_Sql_Sql Server - Fatal编程技术网

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

你期望的结果是什么?你能举个例子吗?你希望在额外的专栏中看到什么?从你失败的尝试中,你的意图并不清楚。