写在前面
mysql的学习,断断续续,今天就接着学习mysql的日期操作吧。
系列文章
mysql之select,insert,delete,update
mysql之count,max,min,sum,avg,celing,floor
Mysql实战
1、获得当前时间格式yyyy-MM-dd HH:mm:ss
select now();
结果
另外一个获取当前时间的函数是:sysdate();
区别:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。
select sysdate(),sleep(3),now();
不过在实际中,sysdate()函数很少用。
2、通过时间戳函数也可以获取当前时间
select current_timestamp(),current_timestamp;
3、获取日期,年月日秒
select date(\'2015-06-27 08:33:32\'),year(\'2015-06-27 08:33:32\'),month(\'2015-06-27 08:33:32\'),day(\'2015-06-27 08:33:32\'),time(\'2015-06-27 08:33:32\'),second(\'2015-06-27 08:33:32\');
4、日期格式化函数
date_format(date,format), time_format(time,format)
select date_format(\'2015-08-08 22:23:01\', \'%Y%m%d%H%i%s\');
日期、时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(str,format) 函数的 一个逆转换。
select str_to_date(\'08/08/2015\',\'%m/%d/%Y\');
select str_to_date(\'08/08/15\',\'%m/%d/%Y\');
select str_to_date(\'08.08.15\',\'%m.%d.%Y\');
select str_to_date(\'08:09:30\',\'%h:%i:%s\');
select str_to_date(\'08.09.2015 08:09:30\', \'%m.%d.%Y %h:%i:%s\');
5、(日期、天数)转换函数:to_days(date), from_days(days)
select to_days(\'2015-06-25\');
select from_days(\'736139\');
当然,有对日期,天数的操作,也有对年,月,日,时,分,秒的操作,这些等待你去发现。
select time_to_sec(\'01:00:05\'); -- 3605 select sec_to_time(3605); -- \'01:00:05\'
拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)
select makedate(2001,31); -- \'2001-01-31\' select makedate(2001,32); -- \'2001-02-01\' select maketime(12,15,30); -- \'12:15:30\'
(Unix 时间戳、日期)转换函数
select unix_timestamp(); -- 1435371899 select unix_timestamp(\'2015-08-08 12:30:00\'); -- \'1439008200\' select from_unixtime(\'1435371899\'); select from_unixtime(1218124800); -- \'2015-06-27 10:24:59.000000\' select from_unixtime(\'1439008200\');-- \'2015-08-08 12:30:00.000000\' select from_unixtime(1435371899, \'%Y %D %M %h:%i:%s %x\'); -- \'2015 27th June 10:24:59 2015\'
6、日期时间计算函数
set @dt=now(); select date_add(@dt, interval 1 day); -- \'2015-06-28 10:30:38\' 加一天 select date_add(@dt, interval 1 hour); -- \'2015-06-27 11:32:10\' 加一小时 select date_add(@dt, interval 1 minute); -- \'2015-06-27 10:33:33\' select date_add(@dt, interval 1 second); -- \'2015-06-27 10:33:34\' select date_add(@dt, interval 1 microsecond); select date_add(@dt, interval 1 week); select date_add(@dt, interval 1 month); select date_add(@dt, interval 1 quarter); select date_add(@dt, interval 1 year); select date_add(@dt, interval -1 day);减一天
adddate(), addtime()函数,可以用 date_add() 来替代。
set @dt = \'2015-08-09 12:12:33\'; select date_add(@dt,interval \'01:15:30\' hour_second);
从结果,更容易理解,在小时和秒上加上你设置的时间的小时和秒。
set @dt = \'2015-08-09 12:12:33\'; select date_add(@dt,interval \'2 01:15:30\' day_second);
减去一个时间
set @dt = \'2015-08-09 12:12:33\'; select date_sub(@dt,interval \'2 01:15:30\' day_second);
日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)
set @dt = \'2015-08-09 12:12:33\'; set @now=now(); select datediff(@now,@dt); -- -43
set @dt = \'2015-08-09 12:12:33\'; set @now=now(); select timediff(@now,@dt);
注意:timediff(time1,time2) 函数的两个参数类型必须相同,要么都是yyyy-MM-dd HH:mm:ss要么都是HH:mm:ss.
时间戳(timestamp)转换、增、减函数:
timestamp(date) -- date to timestamp timestamp(dt,time) -- dt + time timestampadd(unit,interval,datetime_expr) timestampdiff(unit,datetime_expr1,datetime_expr2)
select timestamp(\'2015-08-08\'); -- 2015-08-08 00:00:00 select timestamp(\'2015-08-08 08:00:00\', \'01:01:01\'); -- 2015-08-08 09:01:01 select timestamp(\'2015-08-08 08:00:00\', \'10 01:01:01\'); -- 2015-08-18 09:01:01 select timestampadd(day, 1, \'2015-08-08 08:00:00\'); -- 2015-08-09 08:00:00 select date_add(\'2015-08-08 08:00:00\', interval 1 day); -- 2015-08-09 08:00:00 select timestampdiff(year,\'2002-05-01\',\'2001-01-01\'); -- -1 select timestampdiff(day ,\'2002-05-01\',\'2001-01-01\'); -- -485 select timestampdiff(hour,\'2008-08-08 12:00:00\',\'2008-08-08 00:00:00\'); -- -12 select datediff(\'2015-08-08 12:00:00\', \'2015-08-01 00:00:00\'); -- 7
7、时区转换函数
convert_tz(dt,from_tz,to_tz) select convert_tz(\'2008-08-08 12:00:00\', \'+08:00\', \'+00:00\'); -- 2008-08-08 04:00:00
总结
这里简单介绍了,经常用到的时间操作的函数,当然,还有很多没有顾及到,这只能在以后在实际中,慢慢去发现了。
参考文章
http://www.cnblogs.com/ggjucheng/p/3352280.html