1.获取当前时刻时间
1.1返回当前时刻的日期和时间:select now() 或者 sysdate()
1.2获取当前时刻的日期:select curdate()或select date(now())
当前日期的年:select year(now())
当前日期的月:select month(now())
当前日期的日:select day(now())
当前日期的周: week(now())
1.3获取当前时刻的时间:select curtime()或select time(now())
只获取时间中的小时:select hour(now())
只获取时间中的分钟:select minute(now())
只获取时间中的秒:select second(now())
1.4获取当前时刻的周数
当前时刻所属的周数:select weekofyear(now())
在Sql中使用的dayofweek()函数:select dayofweek(now())
2.日期时间格式转换
date_format函数格式如下date_format(datetime,format)
datetime表示要被转换的具体的日期时间,format表示要转换成的格式,可选的格式如下:
如:select date_format(“2019-12-25 22:47:37”,"%Y-%m-%d") 返回2019-12-25
如:select date_format(“2019-12-25 22:47:37”,"%H:%i:%S")返回22:47:37
除了date_format()函数以外,还有另外一个函数extract,用于返回一个具体日期时间中的单独部分,比如年、月、日、小时、分钟等等。具体形式如:extract(unit from datetime)
datetime表示具体的日期时间,unit表示要从datetime中返回的单独的部分。unit值可以是下列的值:
如:select
extract(year from “2019-12-25 22:47:37”) as col1
,extract(month from “2019-12-25 22:47:37”) as col2
,extract(day from “2019-12-25 22:47:37”) as col3
通过运行上面的代码,就会分别获取到datetime中的年月日
3.日期时间运算
3.1向后偏移时间
比如我们要获取今天之后的x天对应的日期,就是相当于在今天日期的基础上加x天,我们把这叫做向后偏移,这个时候就可以使用date_add()函数,具体形式如下:
date_add(date,interval num unit)
date表示当前的日期,或者当前的日期时间;interval是一个固定的参数;num为上面讲到的x;unit表示你要加的单位,是往后移动7天,还是7月,还是7年,可选值与extract函数中unit的可选值是一样的。
如:select
“2019-01-01” as col1
,date_add(“2019-01-01”,interval 7 year) as col2
,date_add(“2019-01-01”,interval 7 month) as col3
,date_add(“2019-01-01”,interval 7 day) as col4
通过运行上面的代码,就会返回2019-01-01往后7年、7月、7天对应的日期,具体结果如下:
如:select
“2019-01-01 01:01:01” as col1
,date_add(“2019-01-01 01:01:01”,interval 7 hour) as col2
,date_add(“2019-01-01 01:01:01”,interval 7 minute) as col3
,date_add(“2019-01-01 01:01:01”,interval 7 second) as col4
通过运行上面的代码,就会返回2019-01-01 01:01:01往后7小时、7分钟、7秒对应的日期,具体结果如下:
3.2向前偏移时间
有向后偏移,就会有向前偏移。比如我们要获取今天之前的若干天,就是相当于是在当前日期的基础上减去x天,这个时候我们使用的是date_sub()函数,date_sub与date_add的函数形式是一样的。把上面代码中的date_add换成date_sub就表示向前偏移。
如:select
“2019-01-01” as col1
,date_sub(“2019-01-01”,interval 7 year) as col2
,date_sub(“2019-01-01”,interval 7 month) as col3
,date_sub(“2019-01-01”,interval 7 day) as col4
通过运行上面的代码,就会返回2019-01-01往前7年、7月、7天对应的日期,具体结果如下:
向前偏移指定的时间,我们除了使用date_sub以外,我们还可以继续使用date_add,只不过把加的具体num值换成负数就行,比如7换成-7即可,具体实现代码如下:
select
“2019-01-01” as col1
,date_add(“2019-01-01”,interval -7 year) as col2
,date_add(“2019-01-01”,interval -7 month) as col3
,date_add(“2019-01-01”,interval -7 day) as col4
通过运行上面的结果与使用date_sub得出来的结果是一致的。
3.3两日期做差
上面讲完了向前偏移、向后偏移,我们有的时候还需要获取两日期之差,使用的datediff()函数,datediff用于返回两日期之间相差的天数,函数形式如下:
datediff(end_date,start_date)
我们是用end_date去减start_date的。
select datediff(“2019-01-07”,“2019-01-01”),结果为6
3.4活动本月第一天
select date( date_sub( now(),INTERVAL ( extract(day from now() ) - 1 )day ) )