【问题标题】:MySQL select rows with date likeMySQL选择带有日期的行
【发布时间】:2012-08-26 07:29:36
【问题描述】:

在 MySQL 中我有这个查询

SELECT DISTINCT date, descr FROM book ORDER BY date

日期格式为yyyy-mm-dd

我只想选择 2012 年 1 月 的书籍。我曾尝试使用like,但这不起作用。

有什么想法吗?

【问题讨论】:

  • “日期格式为 yyyy-mm-dd” - 日期列是实际日期值吗?还是只是一个字符串?

标签: mysql sql date select date-formatting


【解决方案1】:

使用DATE_FORMAT函数

SELECT DISTINCT date, descr FROM book 
WHERE DATE_FORMAT(date, '%Y %m') = DATE_FORMAT('2012-01-01', '%Y %m')
ORDER BY date

或者使用MONTHYEAR函数

SELECT DISTINCT date, descr FROM book 
WHERE Month(date) = Month('2012-01-01')
AND Year(date) = Year('2012-01-01')
ORDER BY date;

或者使用BETWEEN函数

SELECT DISTINCT date, descr FROM book 
WHERE date BETWEEN '2012-01-01'
AND '2012-01-31'
ORDER BY date;

或使用<=>= 运算符

SELECT DISTINCT date, descr FROM book 
WHERE date >= '2012-01-01'
AND date <= '2012-01-31'
ORDER BY date;

See this SQLFiddle

【讨论】:

  • 感谢您提供的信息,这对您有很大帮助!
【解决方案2】:

您可以在此处使用&gt;=&lt;= 运算符。检查以下代码:

SELECT *
FROM book
WHERE date >= '2012-01-01' AND date <= '2012-01-31'

【讨论】:

    【解决方案3】:

    试试这个:

    SELECT DISTINCT date, descr FROM book WHERE YEAR(date) = '2012' and MONTH(date) = '1'
    

    如果您的“日期”列是 MySQL 日期字段,则此方法有效。

    【讨论】:

      【解决方案4】:

      如果您坚持要使用 LIKE 语法,可以先将日期转换为 CHAR:

      SELECT DISTINCT date,descr FROM book WHERE CAST(date AS char) LIKE '2012-01%' ORDER BY date;

      【讨论】:

      • 这很方便找到特定时间,与年份无关,例如LIKE '%-01-01 00:00:00'
      【解决方案5】:

      使用like 也可以。使用@hims056 fiddle,您可以对其进行测试:

      SELECT DISTINCT ID, date FROM book 
      WHERE date LIKE '2012-01%'
      ORDER BY date;
      

      但是,通常不使用 like 进行日期过滤,对我来说使用 >= 和

      【讨论】:

        【解决方案6】:
        SELECT DISTINCT date, descr
        FROM book
        WHERE YEAR = DATE(NOW()) AND MONTH(date) = '1'
        

        这会给你今年的书

        【讨论】:

        • 您需要将其更正为 WHERE YEAR(date) &gt;= DATE(NOW()) AND MONTH(date) = '1' 以使其正常工作,这将是 非常每个 行调用 3 个函数的低效查询
        猜你喜欢
        • 2011-09-29
        • 2011-07-18
        • 2022-01-10
        • 2012-10-04
        • 2011-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多