mysql中字符串和时间互相转换的方法(自动转换及DATE_FORMAT函数)

本文导语: mysql中字符串和时间互相转换的方法(自动转换及DATE_FORMAT函数)一、mysql中字符串转换成日期下面将讲述如何在MYSQL中把一个字符串转换成日期:1、无需转换的:SELECT * FROM tairlist_day WHERE rq>'2010-07-31' AND rq<'2010-09-01...


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)

你可能感兴趣的:(MYSQL,DBA)