0 前言
时间日期函数在数据库查询中被频繁使用,不同的数据库之间差别不是很大,掌握时间日期函数对我们处理业务具有重要意义,本文针对Mysql数据库经常出现的时间日期函数进行总结,方便读者在日后使用中进行查阅。
1 获取当前时刻的时间函数
1.1 返回当前时刻的时间
select now()
1.2 获取当前时刻的年月日
select curdate()
或者采用下面的方式:
select date(now())
(1)获取年
select year(now())
(2)获取月份
select month(now())
(3)获取当前日期中的日
select day(now())
1.3 获取当前时刻的时分秒
select curtime()
select time(now())
(1)获取当前时刻的小时时间
select hour(now())
(2) 获取分钟
select minute(now())
(3)获取秒
select second(now())
1.4 获取当前时刻的所在的周数
一般全年有52周(365天/7),有时候也可能是53周,如果我们想看下当前时刻是全年中的第几周,可以使用weekofyear()函数
select weekofyear(now())
1.5 获取当前是一周内的周几
如过要获取当天是一周内的周几要使用dayofweek()函数,注意该函数将星期天作为每周的周一,所以与我们平时的时间稍有差别
select dayofweek(now())
1.6 extract函数返回当前日期中所在的年、月、日等
具体用法如下:
extract(unit from datetime)
(1)datetime表示具体的时间日期,
(2)unit表示要从datetime中返回的单独的部分。unit值是指定的参数值:year,month,day,hour,minute,second,week等
select now()
select
extract(year from now()) as year
,extract(month from now()) as month
,extract(day from now()) as day
2 日期之间的时间运算
2.1 计算当前时间的向后偏移时间
采用date_add函数
date_add(date,interval num unit)
date表示用户传入的当前时间,interval是一个固定的参数,num为用户传入的间隔数,unit表示用户需要偏移的单位,如往后移动7天,7月,7年,7时,7分,7秒等。例如:
select
"2020-03-11" as cur_time
,date_add("2020-03-11",interval 7 day) as after_7_day
,date_add("2020-03-11",interval 7 month) as after_7_month
,date_add("2020-03-11",interval 7 year) as after_7_year
2.2 计算当前时间的向前偏移时间
如获取今天之前的若干天的时间。采用date_sub()函数。date_sub()函数与date_add函数使用方法是一样的。
select
"2020-03-11" as cur_time
,date_sub("2020-03-11",interval 7 day) as before_7_day
,date_sub("2020-03-11",interval 7 month) as before_7_month
,date_sub("2020-03-11",interval 7 year) as before_7_year
2.3 两日期做差
datediff(end_date,start_date)
例如:
select datediff("2020-03-11","2020-03-01")
3 日期格式转换
Sql中我们常常利用date_format()函数对日期进行格式化,date_format()函数的格式如下:
date_format(datetime,format)
(1)%Y-%m-%d:年-月-日
select date_format(now(),"%Y-%m-%d")
(2) %H:%i:%S:时:分:秒
select date_format(now(),"%H:%i:%S")