【问题标题】:How do I compare a SQL Server datetime using just the date, not the time?如何仅使用日期而不是时间来比较 SQL Server 日期时间?
【发布时间】:2013-12-12 18:36:36
【问题描述】:

我喜欢在加入时比较以下两个日期:

    a.requestdate = b.alertDate

但我不想考虑时间。只是日期。

想知道最好的方法是什么。我正在使用 SQL Server 2012 (t-sql)

【问题讨论】:

    标签: sql-server datetime sql-server-2012


    【解决方案1】:

    或者您可以将字段转换为日期.....但我更喜欢@ravindra 的解决方案。

    CAST(DateField1 AS DATE) = CAST(DateField2 AS DATE)
    

    【讨论】:

      【解决方案2】:

      在where条件下,可以像这样使用datediff函数。

      datediff(day, a.requestdate, b.alertdate) = 0

      【讨论】:

        【解决方案3】:

        简单,如果使用 Sql 2008 或更高版本

        Convert(date,requestdate) = Convert(date,alertdate)
        

        【讨论】:

          【解决方案4】:

          如果要加入它,最有效的方法可能是创建带有日期的索引计算列,然后加入它们。类似的东西;

          CREATE TABLE test (
            id INT,
            request_datetime DATETIME,
            request_date AS CAST(request_datetime AS DATE)
          );
          
          CREATE INDEX d_ix ON test(request_date);
          

          这将允许连接在索引上使用精确匹配,并且事情应该运行得更快。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-09-19
            • 2012-03-30
            • 1970-01-01
            • 1970-01-01
            • 2011-07-29
            • 2018-07-29
            • 2014-09-11
            相关资源
            最近更新 更多