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);
这将允许联接在索引上使用精确匹配,并且运行速度应该更快