【问题标题】:In SQL how to return records matching date and month only (ignore year)在 SQL 中如何只返回匹配日期和月份的记录(忽略年份)
【发布时间】:2011-06-21 06:56:42
【问题描述】:

使用 SQL,我想返回日期在 3 月 1 日至 6 月 31 日之间的所有记录(例如),但记录应涵盖所有年份。有没有一种简单的方法可以实现这一目标?

【问题讨论】:

  • “SQL”是指“SQL Server”?

标签: sql postgresql date datetime


【解决方案1】:

如果您使用 PL/SQL 或 oracle SQL+,请执行以下操作

SELECT * FROM table
WHERE TO_CHAR(MONTH_COLUMN,'MM/DD') = '06/21'

这将为您提供日期为 6 月 21 日的所有行,无论年份如何。

【讨论】:

    【解决方案2】:

    对于 SQL Server 使用:

    select * 
    from table 
    where month(dtgCol) between 3 and 6
    

    【讨论】:

      【解决方案3】:

      使用日期函数从日期字段中获取月份和日期,并在 where 子句中使用。

      根据您的数据库,函数名称可能会有所不同。但它通常会像

      SELECT * FROM table 
         WHERE Month(dateField) = 6 
             AND (DayOfMonth(dateField) >= 1 AND DayOfMonth(dateField) <= 30)
      

      在 SQL Server 中:

      SELECT * FROM table 
             WHERE Month(dateField) = 6 
                 AND (Day(dateField) >= 1 AND Day(dateField) <= 30)
      

      【讨论】:

        【解决方案4】:

        试试这个,绝对有效

        选择 * 从表 WHERE Month(DateColumn) IN (3, 4, 5, 6)

        【讨论】:

          【解决方案5】:

          对于 SQL Server,我将使用以下内容。 例如:3 月 1 日至 6 月 31 日之间

          select * from (
          select *,DATEFROMPARTS(2011,MONTH(CreateDate),DAY(CreateDate)) as dt from tblAction
          ) as x
          where x.dt between
          DATEFROMPARTS(2011,3,1) and
          DATEFROMPARTS(2011,6,31)
          

          看看有没有帮助..:)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-01-24
            • 1970-01-01
            • 2020-05-03
            • 1970-01-01
            • 2012-07-04
            • 2011-06-26
            • 2019-02-19
            相关资源
            最近更新 更多