【发布时间】:2017-07-12 13:40:46
【问题描述】:
我需要一个 SQL 查询来仅根据年份和月份来比较 2 个日期。
即第一个日期是 2017-07-12,第二个日期是 2017-07-30。
由于它们共享相同的月份和年份,我需要在我的 WHERE 查询中获取它们。
我知道如何使用 DATEFORMAT(将两者都转换为 yyy-mm-01 的形式)。我想知道是否有更清洁的方法。
【问题讨论】:
-
向我们展示查询
我需要一个 SQL 查询来仅根据年份和月份来比较 2 个日期。
即第一个日期是 2017-07-12,第二个日期是 2017-07-30。
由于它们共享相同的月份和年份,我需要在我的 WHERE 查询中获取它们。
我知道如何使用 DATEFORMAT(将两者都转换为 yyy-mm-01 的形式)。我想知道是否有更清洁的方法。
【问题讨论】:
您可以使用Month() 和Year() 函数比较他们的月份和年份:
WHERE YEAR(date1)=YEAR(date2) AND MONTH(date1) = MONTH(date2);
他们的手册中有一些关于mysql date and time functions page 的好信息。
【讨论】:
MySQL 函数EXTRACT() 可用于此目的:
WHERE EXTRACT(YEAR_MONTH FROM date1) = EXTRACT(YEAR_MONTH FROM date2)
EXTRACT(YEAR_MONTH FROM '2017-07-12') 返回'201707'。
【讨论】: