【问题标题】:retrieve data between two date (m-d format) in mysql在mysql中检索两个日期(m-d格式)之间的数据
【发布时间】:2023-03-09 01:03:02
【问题描述】:

我有一个my_table,看起来像这样:

   -id-  -name-  -birth_date-
    01    AAA     1990-01-13
    02    BBB     1992-02-05
    03    CCC     2010-02-11
    04    DDD     1989-02-10
    05    FFF     2000-03-19
    06    GGG     1980-11-04
    07    EEE     2003-10-11

    ...  ...      .........

我想检索birth_date 在一年中的两天之间的所有行(如mm-dd,而不是yyyy-mm-dd)。

如果我有一个特定的年份,我可以这样写:

SELECT * FROM my_table 
WHERE birth_date >= '2012-01-01'
AND birth_date <= '2012-03-11'

但无论年份如何,我都想找到行——像这样(非工作示例):

SELECT * FROM my_table 
WHERE birth_date >= '01-11'
AND birth_date <= '01-11'

我该怎么做?

【问题讨论】:

    标签: mysql date between


    【解决方案1】:

    要获取出生日期在 1 月 11 日到 3 月 11 日之间的记录,您可以这样写:

    SELECT *
      FROM my_table
     WHERE DATE_FORMAT(birth_date, '%m-%d') >= '01-11'
       AND DATE_FORMAT(birth_date, '%m-%d') <= '03-11'
    ;
    

    请注意,要获取生日在(例如)12 月 11 日和 1 月 11 日之间的记录,您需要改用 OR

    SELECT *
      FROM my_table
     WHERE DATE_FORMAT(birth_date, '%m-%d') >= '12-11'
        OR DATE_FORMAT(birth_date, '%m-%d') <= '01-11'
    ;
    

    【讨论】:

      【解决方案2】:

      使用 MySQL 日期和时间的MONTH()DAYOFMONTH(date) 函数。

      SELECT * FROM my_table
      WHERE (MONTH(date_column)>2 AND (DAYOFMONTH(date)>11)
        AND (MONTH(date_column)<4 AND (DAYOFMONTH(date)<15)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-27
        • 2013-01-18
        • 2018-07-03
        • 1970-01-01
        • 2015-07-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多