标签:
1、获取当前时间:
/** 获得当前日期+时间(date + time)函数:now(), 常用 **/ select now() from dual; /** 获取当前时间戳,current_timestamp或者current_timestamp() **/ select current_timestamp, current_timestamp() from dual; /** 获得当前日期+时间(date + time)函数:sysdate(), 和now()不同的是,now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值 **/ select now(), sleep(3), sysdate() from dual;
运行结果:
2、日期/时间操作
如果在日期列上有索引,在进行操作不建议对这些字段进行日期函数操作,因为这样该列的索引将无效。应该转换一下思路,对操作的值进行函数操作,而非列。
其中日期格式化的format串有:
说明符 |
说明 |
%a |
工作日的缩写名称 (Sun..Sat) |
%b |
月份的缩写名称 (Jan..Dec) |
%c |
月份,数字形式(0..12) |
%D |
带有英语后缀的该月日期 (0th, 1st, 2nd, 3rd, ...) |
%d |
该月日期, 数字形式 (00..31) |
%e |
该月日期, 数字形式(0..31) |
%f |
微秒 (000000..999999) |
%H |
小时(00..23) |
%h |
小时(01..12) |
%I |
小时 (01..12) |
%i |
分钟,数字形式 (00..59) |
%j |
一年中的天数 (001..366) |
%k |
小时 (0..23) |
%l |
小时 (1..12) |
%M |
月份名称 (January..December) |
%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位数) |
%% |
‘%’文字字符
|
2.1、日期/时间转字符串、字符串转日期/时间
常用:
1 /** 2 将日期格式化成字符串,mysql在日期的处理上比较宽松,data_format的第一个参数是日期格式的字符串其实也能解析,不过不建议这么操作 3 **/ 4 select DATE_FORMAT(now(),‘%Y%m%d %H:%i:%s‘); 5 select DATE_FORMAT(‘20160711111203‘,‘%Y-%m-%d %H:%i:%s‘); 6 7 /** 8 将日期格式的字符串转换成日期/时间,该format字符串支持date和time 9 **/ 10 select STR_TO_DATE(‘2016-07-11 11:12:03‘,‘%Y-%m-%d %H:%i:%s‘); 11 12 /** 13 将time(不包括日期)转换成字符串形式 14 **/ 15 select TIME_FORMAT(now(),‘%Y%m%d %H:%i:%s‘);
运行结果:
20160712 11:27:47
2016-07-11 11:12:03
2016-07-11 11:12:03
00000000 11:27:47
其他:
(日期、天数)转换函数:to_days(date), from_days(days)
/** 结果:736522 **/ select TO_DAYS(now()) from dual; /** 结果:1916-07-15 **/ select FROM_DAYS(736522) from dual;
(时间、秒)转换函数:time_to_sec(time), sec_to_time(seconds)
/** 结果:3605 **/ select time_to_sec(‘01:00:05‘); /** 结果:01:00:05 **/ select sec_to_time(3605);
拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)
/** 结果:2016-01-30 **/ select makedate(2016,30); /** 结果:2016-02-01 **/ select makedate(2016,32); /** 结果:12:15:30 **/ select maketime(12,15,30);
(Unix 时间戳、日期)转换函数:unix_timestamp(),unix_timestamp(date),from_unixtime(unix_timestamp),from_unixtime(unix_timestamp,format)
select now(),unix_timestamp(); -- 2016-07-12 11:41:56 , 1468294916 select unix_timestamp(‘2016-07-12‘); -- 1468252800 select unix_timestamp(‘2016-07-12 11:38:37‘); -- 1468294717 select from_unixtime(1468294702); -- 2016-07-12 11:38:22 select from_unixtime(1468294717); -- 2016-07-12 11:38:37 select from_unixtime(1468294717, ‘%Y %D %M %h:%i:%s %x‘); -- 2016 12th July 11:38:37 2016
2.2、日期计算函数
111
标签:
原文地址:http://www.cnblogs.com/yangzhilong/p/5662811.html