Sql server 如何仅使用日期而不是时间来比较SQL Server datetime?
当我加入时,我喜欢比较以下两个日期:Sql server 如何仅使用日期而不是时间来比较SQL Server datetime?,sql-server,datetime,sql-server-2012,Sql Server,Datetime,Sql Server 2012,当我加入时,我喜欢比较以下两个日期: a.requestdate = b.alertDate 但我不想把时间考虑在内。只是日期 想知道最好的方法是什么。我使用的是SQL Server 2012(t-SQL)在where条件下,您可以使用这样的函数 datediff(day,a.requestdate,b.alertdate)=0或者您可以将字段强制转换为日期……但我更喜欢@ravindra的解决方案 CAST(DateField1 AS DATE) = CAST(DateField2
a.requestdate = b.alertDate
但我不想把时间考虑在内。只是日期
想知道最好的方法是什么。我使用的是SQL Server 2012(t-SQL)在where条件下,您可以使用这样的函数
datediff(day,a.requestdate,b.alertdate)=0
或者您可以将字段强制转换为日期……但我更喜欢@ravindra的解决方案
CAST(DateField1 AS DATE) = CAST(DateField2 AS DATE)
简单,如果使用Sql 2008或更高版本
Convert(date,requestdate) = Convert(date,alertdate)
如果要加入,最有效的方法可能是创建带日期的索引计算列,然后加入它们。有点像
CREATE TABLE test (
id INT,
request_datetime DATETIME,
request_date AS CAST(request_datetime AS DATE)
);
CREATE INDEX d_ix ON test(request_date);
这将允许联接在索引上使用精确匹配,并且运行速度应该更快