mysql之日期函数

写在前面

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

时间: 2025-01-01 10:26:35

mysql之日期函数的相关文章

MySql格式化日期函数

MySql格式化日期函数记录 1.DATE_FORMAT(date,format): 1 select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case group by weeks; 2 select DATE_FORMAT(create_time,'%Y%m%d') days,count(caseid) count from tc_case group by days; 3 select DATE_F

MySQL:日期函数、时间函数总结

原文:http://www.51sdj.com/phpcms/picture/2009/0711/picture_133.html 一.MySQL 获得当前日期时间 函数1.1 获得当前日期+时间(date + time)函数:now()mysql> select now(); +---------------------+| now() |+---------------------+| 2008-08-08 22:20:46 |+---------------------+ 除了 now()

mysql 时间日期函数类型和使用

-- mysql 时间日期函数类型和使用-- 1.DAY().MONTH().YEAR()--返回指定日期的天数.月数.年数:select day(CURDATE()) as '日' from dual; select month(CURDATE()) as '月' from dual; select year(CURDATE()) as '年' from dual; -- 2 .NOW().current_timestamp().localtime(),localtimestamp() 取的是

MySQL:日期函数、时间函数处理(转)

date_add() 增加MYSQL 获取当前时间加上一个月 update user set leverstart=now(),leverover=date_add(NOW(), interval 1 MONTH) where id=1; date_sub()减少 date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second) month 月份minute 分钟second 秒hour 小时week 周quarter 刻year 年获

mysql中日期函数和日期的加减运算

mysql日期运算,日期函数 DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC标准. mysql> select DAYOFWEEK('1998-02-03'); -> 3 WEEKDAY(date) 返回date的星期索引(0=星期一,1=星期二, --6= 星期天). mysql> select WEEKDAY('1997-10-04 22:23:00'); -> 5 mysql> selec

MySQL之日期函数和时间函数总结

日期函数.时间函数总结 一.获取mysql当前时间 获取当前日期+时间(date+time)函数:now(); mysql> select localtime(); mysql> select now(); +---------------------+ | now() | +---------------------+ | 2018-09-16 19:26:55 | +---------------------+ 1 row in set (0.00 sec) mysql> selec

MYSQL 时间日期函数的用法

mysql日期时间函数比较多,总结一些比较重要的函数,now(),curdate(),curtime(),date_add(),datediff(),date_format(),下面详细介绍其用法和输出的结果. 1,now() select now() 输出 2018-10-1 12:00:00 2,curdate() select curdate() 输出 2018-10-1 3,curtime() select curtime() 输出 12:00:00 4, date_add() sele

MYSQL \ PHP日期函数互相转换

MySQL 获得当前日期时间 函数 来源:http://www.cnblogs.com/ggjucheng/p/3352280.html 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ MySQL 获得当前时间戳函数:current

MySql常用日期函数(转载)

/*date_add(date,interval expr type)和date_sub(date,interval expr type)执行日期运算. date 是一个 datetime 或date值,用来指定起始时间. expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值. expr是一个字符串;对于负值的时间间隔,它可以以一个 ‘-’开头. type 为关键词,它指示了表达式被解释的方式. 关键词interva及 type 分类符均不区分大小写. 日期操作,adddate就是d