mysql 的日期不不用转换的,日期可以直接和字符串比较:
select id,title,created_datetime from event_event where created_datetime between '2012-01-01' and '2012-05-20'
对日期时间进行加减法运算:
SUBDATE(now(),INTERVAL 5 MINUTE)
ADDDATE(now(),INTERVAL 5 MINUTE)
SELECT SUBDATE(now(),INTERVAL 10 MINUTE);
比如查询最近5分钟修改的数据:
select a from A where a.gmt_updated > SUBDATE(now(),INTERVAL 5 MINUTE)
SECOND 秒 SECONDS
MINUTE 分钟 MINUTES
HOUR 时间 HOURS
DAY 天 DAYS
MONTH 月 MONTHS
YEAR 年 YEARS
MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"
HOUR_MINUTE 小时和分钟 "HOURS:MINUTES"
DAY_HOUR 天和小时 "DAYS HOURS"
YEAR_MONTH 年和月 "YEARS-MONTHS"
HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS"
DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES"
DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"
expr中允许任何标点做分隔符,如果所有是DATE值时结果是一个DATE值,否则结果是一个DATETIME值)
如果type关键词不完整,则MySQL从右端取值,DAY_SECOND因为缺少小时分钟等于MINUTE_SECOND)
如果增加MONTH、YEAR_MONTH或YEAR,天数大于结果月份的最大天数则使用最大天数)
mysql> SELECT "1997-12-31 23:59:59" INTERVAL 1 SECOND;
-> 1998-01-01 00:00:00
mysql> SELECT INTERVAL 1 DAY "1997-12-31";
-> 1998-01-01
mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;
-> 1997-12-31 23:59:59
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 SECOND);
-> 1998-01-01 00:00:00
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 DAY);
-> 1998-01-01 23:59:59
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL "1:1" MINUTE_SECOND);
-> 1998-01-01 00:01:00
mysql> SELECT DATE_SUB("1998-01-01 00:00:00",INTERVAL "1 1:1:1" DAY_SECOND);
-> 1997-12-30 22:58:59
mysql> SELECT DATE_ADD("1998-01-01 00:00:00", INTERVAL "-1 10" DAY_HOUR);
-> 1997-12-30 14:00:00
mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
-> 1997-12-02
mysql> SELECT EXTRACT(YEAR FROM "1999-07-02");
-> 1999
mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");
-> 199907
mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");
-> 20102
你可以使用常用的格式集中的任何一个指定 DATETIME、DATE 和 TIMESTAMP 值:
一个 'YYYY-MM-DD HH:MM:SS ' 或 'YY-MM-DD HH:MM:SS ' 格式的字符串。一个“宽松”的语法是被允许的:以任何标点符号作为日期部分和时间部分中的定界符。例如, '98-12-31 11:30:45 '、 '98.12.31 1+30+45 '、 '98/12/31 11*30*45 ' 和 '98@12@31 11^30^45 ' 均是等价的。
一个 'YYYY-MM-DD ' 或 'YY-MM-DD ' 格式的字符串。这里,一个“宽松”的语法同样也是被允许的:例如, '98.12.31 '、 '98-12-31 '、 '98/12/31 ' 和 '98@12@31 ' 是等价的。
一个无定界符的 'YYYYMMDDHHMMSS ' 或 'YYMMDDHHMMSS ' 格式的字符串,只要字符串看起来像是一个日期。例如, '19970523091528 ' 和 '970523091528 ' 均被解释为 '1997-05-23 09:15:28 ',但是 '971122129015 ' 却是违法的(它的分部分是无意义的),该值被插入时将变成 '0000-00-00 00:00:00 '。
一个无定界符的 'YYYYMMDD ' 或 'YYMMDD ' 格式的字符串,只要字符串看起来像是一个日期。例如, '19970523 ' 和 '970523 ' 被解释成为 '1997-05-23 ',但是 '971332 ' 却是违法的(它的月和日部分是无意义的),该值被插入时将变成 '0000-00-00 '。
一个 YYYYMMDDHHMMSS 或 YYMMDDHHMMSS 格式的数字,只要数字看起来像是一个日期。例如,19830905132800 和 830905132800 被解释成为 '1983-09-05 13:28:00 '。
一个 YYYYMMDD 或 YYMMDD 格式的数字,只要数字看起来像是一个日期。例如,19830905 和 830905 被解释成为 '1983-09-05 '。
在一个 DATETIME、DATE 或 TIMESTAMP 语境中,一个函数的返回值将随之而变化,例如 NOW() 或 CURRENT_DATE。
非法的 DATETIME、DATE 或 TIMESTAMP 值将会被转换到适当形式的“零”值( '0000-00-00 00:00:00 '、 '0000-00-00 ' 或 00000000000000)。