【问题标题】:Get date of 3 days ago获取 3 天前的日期
【发布时间】:2021-10-08 18:28:19
【问题描述】:

我有选择当天所有内容的 SQL 脚本。

SELECT  [ClientID] from [logs] where Date > CONVERT (date, SYSDATETIME())

日期是日期时间的类型。

如何在过去 3 天内获取所有内容?我想我需要从函数 SYSDATETIME() 的结果中减去 3 天,但是如何?

【问题讨论】:

  • DATEADD(DAY,-3,CONVERT (date, SYSDATETIME()))

标签: sql sql-server


【解决方案1】:
SELECT  [ClientID] from [logs] where Date > DATEADD(day, -3, CONVERT (date, SYSDATETIME()))

【讨论】:

  • @vico 嗨,你找到答案了吗?
【解决方案2】:

使用GETDATE():是的,它从系统获取日期!

将当前数据库系统时间戳作为日期时间值返回 没有数据库时区偏移。该值源自 SQL Server 实例所在计算机的操作系统 正在运行。

查询:

SELECT  [ClientID] from [logs] where ( Date  > GETDATE() - 3)

更多参考:

GETDATE Detailed Documentation

【讨论】:

  • GetDate() 获取 DateTime(即日期和时间)。
【解决方案3】:

对于 mysql 使用这个:

SELECT DATE_ADD(CURRENT_DATE, INTERVAL - 3 DAY);

【讨论】:

  • sql-server 不是 mysql
【解决方案4】:

使用BETWEEN

SELECT ClientID 
FROM logs
WHERE Date BETWEEN SYSDATETIME() AND SYSDATETIME() - 3

【讨论】:

【解决方案5】:

使用 BETWEEN 很好。我也更喜欢 DATEADD 函数。但请注意,SYSDATETIME 函数(或者我会使用 GETDATE())还包括时间,这意味着可能不包括当前时间之前但三天内的事件。您可能必须将双方都转换为日期而不是日期时间。

【讨论】:

    【解决方案6】:
    SELECT  [ClientID] from [logs] where Date > DATEADD(day, -3, SYSDATETIME())
    

    【讨论】:

      【解决方案7】:

      就我而言:

      select * from Table where row > now() - INTERVAL 3 day;
      

      所以你可以获取 3 天前的所有内容!

      【讨论】:

        猜你喜欢
        • 2011-07-06
        • 2019-10-08
        • 1970-01-01
        • 2021-09-13
        • 2019-04-10
        • 1970-01-01
        • 2017-05-02
        • 2012-12-11
        • 1970-01-01
        相关资源
        最近更新 更多