3

我有一个关于在 MySQL 中选择日期范围的快速问题,格式如下YYYY-MM-DD

我阅读了MySQL 选择日期范围问题并了解了它的基本用法,但是如何“包括”例如 2 月 29 日?我想避免使用 PHP 解决方法,MySQL 中有类似的东西吗?

我不太明白http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

有人可以举个例子,如何选择去年 2 月的数据吗?

4

2 回答 2

7

在您指定一个月的那一刻,MYSQL 引擎足够聪明,可以获取正确的一个月天数(无论是否是闰年)并相应地评估您的日期字段。

要在您选择的两个日期之间获取数据:(interval -1 year用于从今天开始返回一年)

SELECT * FROM yourtable 
WHERE yourdate BETWEEN DATE_ADD(Now(), Interval -1 YEAR)
AND Now() 
AND MONTH(yourdate) = 2 -- to get data for Month of February
;

或者你可以简单地用 YEAR 函数编写而不BETWEEN

SELECT * FROM yourtable 
WHERE YEAR(yourdate) = YEAR(Now()) - 1
AND MONTH(yourdate) = 2 -- to get data for Month of February
;

对于Str_to_Date函数的问题,用于将包含日期的字符串转换为具有所需格式的日期类型,它是函数的反DATE_FORMAT函数。

SELECT STR_TO_DATE('12-Apr-2012', '%d-%M-%Y')
FROM DUAL
;

请注意,在上面的演示中,您必须以添加到STR_TO_DATE函数中的格式指定日、月、年的排列方式。

PS:您在这里真正想要实现的目标相当模糊,没有问题中显示的相同数据和预期结果.. :)

于 2013-01-24T07:57:49.260 回答
3

下面的查询将为您提供去年二月的数据

SELECT * FROM `your_table_name` WHERE YEAR(`your_date_field_name`) = YEAR(CURRENT_DATE()) AND MONTH(`your_date_field_name`) = 2
于 2013-01-24T06:53:36.320 回答