Mysql格式化日期时间

项目中有关时间日期的格式化,不正确的格式化肯呢过导致数据无法插入数据库。MySQL的格式总结如下有:

格式 描述

%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位


实例如下:

1.date_format(e.start_time,'%Y-%m-%d %H:%i:%s')

如果把%m改为%c,那么日期的格式就是2012-2-12 00:00:00月是数值,%m是十二月制的。H是24小时制,h是12小时制。

返回结果类似:

[html]  view plain  copy
  1. Dec 29 2008 11:45 PM  
  2. 12-29-2008  
  3. 29 Dec 08  
  4. 29 Dec 2008 16:25:46  

2.如果参数是类似 1344887103 十位数字,需要返回时间日期,则使用FROM_UNIXTIME( unix_timestamp ) 

返回值:有两种,可能是类似 'YYYY-MM-DD HH:MM:SS' 这样的字符串,也有可能是类似于 YYYYMMDDHHMMSS.uuuuuu 这样的数字,具体返回什么取决于该函数被调用的形式。

[html]  view plain  copy
  1. mysql> select FROM_UNIXTIME(1344887103,'%Y-%M-%D %h:%i:%s');  
  2. +-----------------------------------------------+  
  3. | FROM_UNIXTIME(1344887103,'%Y-%M-%D %h:%i:%s') |  
  4. +-----------------------------------------------+  
  5. | 2012-August-14th 03:45:03                     |  
  6. +-----------------------------------------------+  
  7. 1 row in set (0.00 sec)  
  8. mysql> select FROM_UNIXTIME(1344887103,'%Y-%m-%D %h:%i:%s');  
  9. +-----------------------------------------------+  
  10. | FROM_UNIXTIME(1344887103,'%Y-%m-%D %h:%i:%s') |  
  11. +-----------------------------------------------+  
  12. | 2012-08-14th 03:45:03                         |  
  13. +-----------------------------------------------+  
  14.   
  15. 1 row in set (0.00 sec)  

3.

参数:date 可能是个 DATE 字符串,DATETIME 字符串,TIMESTAPE 字符串,或者是一个类似于 YYMMDD 或者 YYYYMMDD 的数字串。 
返回:从 UTC 时间'1970-01-01 00:00:00'开始到该参数之间的秒数。服务器将参数 date 解释成当前时区的壹个值并且将其转化成 UTC 格式的内部时间。客户端则可以自行设置当前时区。当 UNIX_TIMESTAMP() 用于壹个 TIMESTAMP 列时,函数直接返回内部时间戳的值;如果你传递壹个超出范围的时间到 UNIX_TIMESTAMP(),它的返回值是零。

[html]  view plain  copy
  1.   

注意:如果你使用 UNIX_TIMESTAMP() 和 FROM_UNIXTIME() 来转换 TIMESTAMP 值与 Unix 时间戳的值,精度会丢失,因为这个映射在两个方向上不是一一对应的。比如说,由于本地时区的更改,有可能两个 UNIX_TIMESTAMP() 会映射到同壹个 Unix 时间戳的值。 FROM_UNIXTIME() 只会映射到原来的那个时间戳的值上。这里有个例子,在 CET 时区使用 TIMESTAMP:


from: http://blog.csdn.net/findmyself_for_world/article/details/38082915

你可能感兴趣的:(Database)