【问题标题】:Get rows having a datetime less than or equal to today ignoring time获取日期时间小于或等于今天忽略时间的行
【发布时间】:2019-10-30 22:48:19
【问题描述】:

我有一个日期时间字段,并希望选择日期小于或等于今天但忽略其中时间部分的记录。

我的日期时间字段如下:

2019-05-17 13:31:15.900, 2019-05-16 13:32:17.277, 2019-05-24 15:20:03.823

我只想获取日期时间为2019-05-17 13:31:15.9002019-05-16 13:32:17.277 的行,忽略时间部分。

知道如何在 sql server 中做到这一点吗?

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    只需将您的专栏和今天的日期都投到DATE

    SELECT * FROM MyTable
    WHERE CAST(dt AS DATE) <= CAST(GETDATE() AS DATE)
    

    【讨论】:

      【解决方案2】:

      您可以尝试将GETDATE() 转换为日期类型,以便与明天午夜进行比较:

      SELECT *
      FROM yourTable
      WHERE dt < CAST(DATEADD(day, 1, GETDATE()) AS date);
      -- earlier than tomorrow at midnight
      

      撰写此答案的日期是 2019 年 6 月 17 日,因此上述查询将返回日期时间严格小于的任何记录,该日期时间为 2019 年 6 月 18 日午夜。因此,最新记录将是“2019-06-17 23:59:59”。

      【讨论】:

      • 这是否考虑与实际日期相等的日期?
      • 好的,谢谢,但我需要包括那些像今天一样具有日期时间字段的行。不仅是那些严格在实际日期之前的人。
      猜你喜欢
      • 2011-07-08
      • 2015-12-15
      • 2015-10-28
      • 2017-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      相关资源
      最近更新 更多