【问题标题】:How do I extract Month and Year in a MySQL date and compare them?如何在 MySQL 日期中提取月份和年份并进行比较?
【发布时间】:2011-12-11 11:20:42
【问题描述】:

如何从 mySQL 日期中提取月份和日期并将其与另一个日期进行比较?

我找到了这个 MONTH(),但它只获取月份。我正在寻找月份和年份。

【问题讨论】:

  • 还有YEAR函数。
  • @zerkms DATE_FORMAT() 完美运行。我会给你正确的答案。您介意解释一下 %c、%d 和 %e 之间的区别吗? %c 工作正常,但最后 2 个给我的日期不正确。
  • DATE_FORMAT(date,'%Y%m') 与 EXTRACT(YEAR_MONTH FROM date) 一样有效

标签: mysql sql date


【解决方案1】:

在Mysql Doku中: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_extract

SELECT EXTRACT( YEAR_MONTH FROM `date` ) 
FROM `Table` WHERE Condition = 'Condition';

【讨论】:

  • 能否解释一下EXTRACTDATE_FORMAT 的区别?
【解决方案2】:

虽然它在 cmets 中进行了讨论,但还没有包含它的答案,因此很容易错过。 DATE_FORMAT 效果非常好,并且可以灵活地处理许多不同的模式。

DATE_FORMAT(date,'%Y%m')

将其放入查询中:

SELECT DATE_FORMAT(test_date,'%Y%m') AS date FROM test_table;

【讨论】:

    【解决方案3】:

    如果您在日期之间进行比较,请提取完整日期进行比较。如果您只比较年份和月份,请使用

    SELECT YEAR(date) AS 'year', MONTH(date) AS 'month'
     FROM Table Where Condition = 'Condition';
    

    【讨论】:

      【解决方案4】:
      SELECT * FROM Table_name Where Month(date)='10' && YEAR(date)='2016';
      

      【讨论】:

        【解决方案5】:

        您可能想查看有关日期函数的 mySQL 文档。 http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

        有一个 YEAR() 函数,就像有一个 MONTH() 函数一样。如果您正在进行比较,是否有理由缩短日期?您是否真的有兴趣忽略基于日期的差异,如果是这样,您想这样做吗?

        【讨论】:

        • 我现在正在尝试获取月份和年份。
        【解决方案6】:

        还应该有一个 YEAR()。

        至于比较,您可以比较这些年份和月份的第一天的日期,或者您可以将年/月对转换为适合比较的数字(即较大 = 较晚)。 (练习留给读者。有关提示,请阅读 ISO 日期格式。)

        或者您可以使用多重比较(即先是年,然后是月)。

        【讨论】:

        • 无需数学即可比较日期:-)
        • 哦,是的,我也补充一下。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-10
        • 1970-01-01
        • 2011-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多