写给自己
有一些情况需要考虑时间和字符串的转换工作,MySQL提供了一些内置函数可以很方便的相互转换。试一下吧
创作时间
作者
正文
MySQL时间格式
%Y:代表4位的年份
%y:代表2为的年份
%m:代表月, 格式为(01……12)
%c:代表月, 格式为(1……12)
%d:代表月份中的天数,格式为(00……31)
%e:代表月份中的天数, 格式为(0……31)
%H:代表小时,格式为(00……23)
%k:代表 小时,格式为(0……23)
%h: 代表小时,格式为(01……12)
%I: 代表小时,格式为(01……12)
%l :代表小时,格式为(1……12)
%i: 代表分钟, 格式为(00……59)
%S:代表 秒,格式为(00……59)
%s:代表 秒,格式为(00……59)
%r:代表 时间,格式为12 小时(hh:mm:ss [AP]M)
%T:代表 时间,格式为24 小时(hh:mm:ss)
使用的函数:DATE_FORMAT(date,format) date:需要转换的日期 format:格式化的样式
format样式整理:
年
%Y 显示四位 : 2015 %y 只显示后两位 :15月
%M 月份的英文显示:October %m 月份的阿拉伯显示:01-12
%b 月份的英文缩略显示:Oct %c 月份的阿拉伯显示:1-12日
%d 阿拉伯显示:00-31 %D 带有英文后缀:1st-31th
%e 阿拉伯显示:1-31 %j 年的天:001-366时
%H :00-23 %h:01-12 %I:01-12 %k:0-23 %l:1-12分
分: %i:00-59秒
%S:00-59 %s:00-59毫秒
微妙: %f 777周
%W:周的英文显示 %w 周的阿拉伯显示 :0(星期日)-6(星期六)
%a 周的英文缩略显示:Mon-时间
AM/PM:%p
12小时制时间:%r: 02:02:44 PM
24小时制时间: %T: 14:02:44
转换
str_2_date
SELECT str_to_date('2015-01-02','%Y-%m-%d')
2015-01-02
date_2_str
SELECT DATE_FORMAT(now(),"%Y-%m-%d %H:%i:%s %p")
大批量时间比较使用UNIX时间戳比较
当系统需要非常大量的时间比较时可以使用Unix时间戳的方式进行比较,我们分析MySQL源码可知,MySQL时间类型的存储方式是将日期和时间分别存储(8字节
获取时间戳
SELECT UNIX_TIMESTAMP('2010-03-01 00:00:30')
从时间戳获得时间
SELECT FROM_UNIXTIME(1267401630)