mysql中字符串和时间互相转换的方法(自动转换及DATE_FORMAT函数)
一、mysql中字符串转换成日期
下面将讲述如何在MYSQL中把一个字符串转换成日期:
1、无需转换的:
SELECT * FROM tairlist_day WHERE rq>'2010-07-31' AND rq<'2010-09-01'
2、使用:DATE_FORMAT.
mysql中,DATE_FORMAT(date, format) 函数根据format字符串格式化date值,format字符串格式如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | %M 月名字(January……December) %W 星期名字(Sunday……Saturday) %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。) %Y 年, 数字, 4 位 %y 年, 数字, 2 位 %a 缩写的星期名字(Sun……Sat) %d 月份中的天数, 数字(00……31) %e 月份中的天数, 数字(0……31) %m 月, 数字(01……12) %c 月, 数字(1……12) %b 缩写的月份名字(Jan……Dec) %j 一年中的天数(001……366) %H 小时(00……23) %k 小时(0……23) %h 小时(01……12) %I 小时(01……12) %l 小时(1……12) %i 分钟, 数字(00……59) %r 时间,12 小时(hh:mm:ss [AP]M) %T 时间,24 小时(hh:mm:ss) %S 秒(00……59) %s 秒(00……59) %p AM或PM %w 一个星期中的天数(0=Sunday ……6=Saturday ) %U 星期(0……52), 这里星期天是星期的第一天 %u 星期(0……52), 这里星期一是星期的第一天 %% 一个文字“%”。 |
举例:
把字符串转为日期格式:
1 | SELECT DATE_FORMAT( '2011-09-20 08:30:45' , '%Y-%m-%d %H:%i:%S' ); |
把日期转为字符串格式:
1 | SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S' ); |
下面的脚本使用 DATE_FORMAT() 函数来显示不同的格式。我们使用 NOW() 来获得当前的日期/时间:
1 2 3 4 | DATE_FORMAT(NOW(), '%b %d %Y %h:%i %p' ) DATE_FORMAT(NOW(), '%m-%d-%Y' ) DATE_FORMAT(NOW(), '%d %b %y' ) DATE_FORMAT(NOW(), '%d %b %Y %T:%f' ) |
结果类似:
1 2 3 4 | Dec 29 2008 11:45 PM 12-29-2008 29 Dec 08 29 Dec 2008 16:25:46.635 |
背景:rq字段信息为:20100901
1 | SELECT * FROM tairlist_day WHERE DATE_FORMAT( rq, '%Y-%m-%d' )> '2010-08-01' AND DATE_FORMAT( rq, '%Y-%m-%d' )< '2010-08-03' |
其中第1要在一个“宽松”的语法是被允许的:以任何标点符号作为日期部分和时间部分中的定界符,如:
一个 YYYYMMDD 或 YYMMDD 格式的数字,只要数字看起来像是一个日期。例如,19830905 和 830905 被解释成为 '1983-09-05 '。
二、mysql中日期转换成字符串
1 2 3 4 5 6 7 | mysql> select date_format(now(), '%Y' ); + -------------------------+ | date_format(now(), '%Y' ) | + -------------------------+ | 2009 | + -------------------------+ 1 row in set (0.00 sec) |
扩展:
%Y:年
%c:月
%d:日
%H:小时
%i:分钟
%s:秒
1 2 3 4 5 6 7 | mysql> select date_format(now(), '%Y-%c-%d %h:%i:%s' ); + ----------------------------------------+ | date_format(now(), '%Y-%c-%d %h:%i:%s' ) | + ----------------------------------------+ | 2009-8-07 06:59:40 | + ----------------------------------------+ 1 row in set (0.00 sec) |