【问题标题】:SQL query for today's date minus two months今天的日期减去两个月的 SQL 查询
【发布时间】:2011-03-24 21:15:44
【问题描述】:

我想选择表中输入日期早于 2 个月的所有记录。

知道我该怎么做吗?

我还没有尝试过任何东西,但我就在这一点上:

SELECT COUNT(1) FROM FB WHERE Dte > GETDATE()

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    如果您使用的是 SQL Server,请尝试以下操作:

    SELECT * FROM MyTable
    WHERE MyDate < DATEADD(month, -2, GETDATE())
    

    根据您的更新,它将是:

    SELECT * FROM FB WHERE Dte <  DATEADD(month, -2, GETDATE())
    

    【讨论】:

    • 如果你使用 MySQL 这将变成:MyDate &lt; DATE_ADD(NOW(), INTERVAL -2 MONTH)
    【解决方案2】:

    我在 SQL Server 上使用它:

    SELECT 
    
    DATEADD(MONTH,-2,GETDATE()) '- 2 months'
    
    FROM MyTable
    

    【讨论】:

      【解决方案3】:

      TSQL,使用变量声明的替代方法。 (它可能会提高 Query 的可读性)

      DECLARE @gapPeriod DATETIME = DATEADD(MONTH,-2,GETDATE()); --Period:Last 2 months.
      
      SELECT 
              *
          FROM 
              FB as A
          WHERE
              A.Dte <= @gapPeriod;                               --only older records.
      

      【讨论】:

        【解决方案4】:

        这样的东西对你有用吗?

        SELECT * FROM FB WHERE Dte >= DATE(NOW() - INTERVAL 2 MONTH);
        

        【讨论】:

        • 这是 MySQL 的解决方案,他要求提供 SQL Server 的解决方案。它不适用于 SQL Server。
        • 这是我需要的
        【解决方案5】:
        SELECT COUNT(1) FROM FB 
        WHERE Dte > DATE_SUB(now(), INTERVAL 2 MONTH)
        

        【讨论】:

          【解决方案6】:
          SELECT COUNT(1)
          FROM FB
          WHERE
              Dte BETWEEN CAST(YEAR(GETDATE()) AS VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(month, -1, GETDATE())) AS VARCHAR(2)) + '-20 00:00:00'
                  AND CAST(YEAR(GETDATE()) AS VARCHAR(4)) + '-' + CAST(MONTH(GETDATE()) AS VARCHAR(2)) + '-20 00:00:00'
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-05-08
            • 2017-08-23
            • 2021-04-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-11-12
            • 2016-02-28
            相关资源
            最近更新 更多