日期函数
日期函数
在DBMS中日期和时间值以特殊的格式存储,以便能快速和有效地排序或过滤。常见的日期数据格式有两种:'yyyy-MM-dd' 和 'yyyyMMdd'。
时间戳-日期格式转化
时间戳是数据库中自动生成的唯一二进制数字,表明数据库中数据修改发生的相对顺序,其记录形式类似:1627963699 ,在实际工作环境中,对于用户行为发生的时间通常都是用时间戳进行记录,时间戳和日期格式之间可以利用from_unixtime和 unix_timestamp进行转换。
from_unixtime可以将时间戳转换成日期,其使用语法和输出如下所示:
select
from_unixtime(time,'yyyy-MM-dd') as time
From question_practice_detail
得出
Time
2021-08-03
2021-08-03
2021-08-03
unix_timestamp可以将日期转换回时间戳,其使用语法和输出如下所示:
select
from_unixtime('2021-08-01','yyyy-MM-dd') as time
年月日截取
对于常见的日期格式,类似’2021-08-01’,有时候在聚合计算时我们会想将日期中的
年、月、日分别提取出来,这时应该怎么做呢?SQL为此提供了对应的年、月、日提取
函数,分别为year(),month(),day()。
select
year('2021-08-01'),month('2021-08-01'),day('2021-08-01')
日期差计算
这一节我们再来介绍几个常用的日期间隔计算函数
-datedff
datediff的作用为计算两个日期之间的天数间隔,语法为datediff(date1,date2),返回
起始时间 date1 和结束时间 date2 之间的天数,date1大于date2的情况下,返回的天
数为正数,date1小于date2的情况下,返回的天数为负数。
select
datediff('2021-08–09','2021-08-01')
输出
8
-date_sub
语法为date_sub (string startdate, interval int day) ,返回开始日期startdate减少
days天后的日期。
select
date_sub('2021-08–09',interval 8 day)
输出
‘2021-08-01'
-date_add
语法为date_add(string startdate, interval int day) ,返回开始日期startdate增加days天后的日期
select
date_add('2021-08–01',interval 8 day)
输出
‘2021-08-09'