我有一个关于在 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 月的数据吗?
我有一个关于在 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 月的数据吗?
在您指定一个月的那一刻,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:您在这里真正想要实现的目标相当模糊,没有问题中显示的相同数据和预期结果.. :)
下面的查询将为您提供去年二月的数据
SELECT * FROM `your_table_name` WHERE YEAR(`your_date_field_name`) = YEAR(CURRENT_DATE()) AND MONTH(`your_date_field_name`) = 2