码迷,mamicode.com
首页 > 数据库 > 详细

mysql之日期函数

时间:2015-06-27 11:18:54      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

写在前面

mysql的学习,断断续续,今天就接着学习mysql的日期操作吧。

系列文章

mysql之创建数据库,创建数据表

mysql之select,insert,delete,update

mysql之group by,order by

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

mysql之日期函数

标签:

原文地址:http://www.cnblogs.com/wolf-sun/p/4603651.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!