继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

mysql之日期函数

PIPIONE
关注TA
已关注
手记 1092
粉丝 147
获赞 702

写在前面

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'); -- 3605select 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(); -- 1435371899select 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 timestamptimestamp(dt,time) -- dt + timetimestampadd(unit,interval,datetime_expr) timestampdiff(unit,datetime_expr1,datetime_expr2)

复制代码

select timestamp('2015-08-08');
 -- 2015-08-08 00:00:00select timestamp('2015-08-08 08:00:00', '01:01:01'); 
 -- 2015-08-08 09:01:01select timestamp('2015-08-08 08:00:00', '10 01:01:01'); 
 -- 2015-08-18 09:01:01select timestampadd(day, 1, '2015-08-08 08:00:00'); 
 -- 2015-08-09 08:00:00select date_add('2015-08-08 08:00:00', interval 1 day);
 -- 2015-08-09 08:00:00select timestampdiff(year,'2002-05-01','2001-01-01'); 
 -- -1select timestampdiff(day ,'2002-05-01','2001-01-01'); 
 -- -485select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00'); 
 -- -12select 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

总结

这里简单介绍了,经常用到的时间操作的函数,当然,还有很多没有顾及到,这只能在以后在实际中,慢慢去发现了。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP