【问题标题】:Query select where date between "1st day of current month" and "current day"查询选择“当月第一天”和“当日”之间的日期
【发布时间】:2019-11-05 19:51:21
【问题描述】:

我需要从 SQL Server 数据库中选择当月 1 日和当日之间的数据。

    SELECT *
      FROM table_name 
     WHERE date BETWEEN "1st day of current month" AND "current day"

【问题讨论】:

  • 那你有什么尝试?

标签: sql sql-server


【解决方案1】:

您可以使用EOMONTH() 跳转到上个月的最后一天。然后,只需添加 1 天,使用 DATEADD() 和 1 作为当天的增量,即可获得当月的第一天。

SELECT *
FROM <table>
WHERE <date> BETWEEN DATEADD(DAY, 1, EOMONTH(GETDATE(),  -1)) and GETDATE()

【讨论】:

    【解决方案2】:

    我认为这应该可行,

    SELECT * 
    FROM   TABLE_NAME 
     WHERE date BETWEEN DATEADD(mm, DATEDIFF(mm,0,date), 0) AND GETDATE()
    

    【讨论】:

      【解决方案3】:

      希望对你有帮助,

      select * from TABLE_NAME 
      where date between 
      dateadd (DAY, -(datepart (DAY, getdate ())) + 1, convert (date, GETDATE ())) 
      and 
      convert (date, getdate ()) 
      

      【讨论】:

        【解决方案4】:

        我不建议为此使用between。我更喜欢无需修改即可在dates 和datetimes 上运行的代码。

        此外,SQL Server 还具有方便的datefromparts() 功能。所以,我建议:

        WHERE date >= DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1) AND
              date < CONVERT(DATE, DATEADD(DAY, 1, GETDATE()))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-02
          • 1970-01-01
          • 2021-04-24
          • 1970-01-01
          • 2013-12-25
          • 1970-01-01
          • 2021-01-24
          • 1970-01-01
          相关资源
          最近更新 更多