时间序列数据是一种重要的结构化数据形式,在多个时间点观察或测量到的任何事物都可以形成一段时间序列。时间序列可以是固定频率的,也可以是不定期的。

时间序列数据的意义取决于具体的应用场景,本节使用SQL语句,讲解日期格式数据的应用,包含返回当前时间、时间偏移、时间作差内容。

本文使用工具:MySQL 8.0、Navicat Premium

本文包含的内容:返回当前时间、时间偏移、时间作差

适用范围:使用SQL语句处理日期类型数据

一、返回当前时间

在SQL中,返回当前时间与EXCEL中有很多相似之处,比如返回年月日,当前周,当前是星期几,只要类比学习即可,select在此处用于执行运算,as后面跟一个别名。

1.1 返回当前的年月日

select current_date()

使用Navicat Premium 12数据库管理工具连接MySQL,新建查询,在查询区域写SQL语句进行数据查询。

sql和excel数据分析(从零开始学SQL数据分析)(1)

1.2 返回当前的时间(到秒)

select current_timestamp as '当前时间';

sql和excel数据分析(从零开始学SQL数据分析)(2)

1.3 返回日期中的年月日

SELECT date_format(current_timestamp,'%Y-%m-%d') as '日期';

sql和excel数据分析(从零开始学SQL数据分析)(3)

这里使用date_format设置自定义格式,'%Y-%m-%d'用来返回年月日。

1.4 返回日期中的年(year)

select year('2021-06-14 20:36:04') as year;

sql和excel数据分析(从零开始学SQL数据分析)(4)

1.5 返回日期中的月(month)

select month('2021-06-14 20:36:04') as month;

sql和excel数据分析(从零开始学SQL数据分析)(5)

1.6 返回日期中的日(day)

select day('2021-06-14 20:36:04') as day;

sql和excel数据分析(从零开始学SQL数据分析)(6)

1.7 返回日期中的时(hour)

select hour('2021-06-14 20:36:04') as hour;

sql和excel数据分析(从零开始学SQL数据分析)(7)

1.8 返回日期中的分(minute)

select minute('2021-06-14 20:36:04') as minute;

sql和excel数据分析(从零开始学SQL数据分析)(8)

1.9 返回日期中的秒(second)

select second('2021-06-14 20:36:04') as second;

sql和excel数据分析(从零开始学SQL数据分析)(9)

二、时间偏移

2.1 返回开始月份增加month后的日期

SELECT PERIOD_ADD(202106,3) as '增加月';

sql和excel数据分析(从零开始学SQL数据分析)(10)

月份的偏移使用PERIOD_ADD函数,后面缀加偏移的月数即可。

2.2 返回开始月份减少month后的日期

SELECT PERIOD_ADD(202106,-3) as '减少月';

sql和excel数据分析(从零开始学SQL数据分析)(11)

2.3 返回开始日期增加days天后的日期

select ADDDATE('2021-06-14',7) as '增加7天';

sql和excel数据分析(从零开始学SQL数据分析)(12)

天数的偏移使用ADDDATE函数,后面缀加偏移的天数即可。

2.4 返回开始日期减去days后的日期

select ADDDATE('2021-06-14',-7) as '减少7天';

sql和excel数据分析(从零开始学SQL数据分析)(13)

2.5 返回当月第1天

select DATE_ADD(curdate(),interval -day(curdate()) 1 day) as '本月第一天';

sql和excel数据分析(从零开始学SQL数据分析)(14)

2.6 返回当年的第一天

select DATE_SUB(curdate(),interval dayofyear(now())-1 day) as '当年第一天';

sql和excel数据分析(从零开始学SQL数据分析)(15)

2.7 返回日期在当前的周数

select WEEKOFYEAR('2021-06-14') as '当前周'

sql和excel数据分析(从零开始学SQL数据分析)(16)

返回当前周用WEEKOFYEAR函数。

2.8 返回日期在当前的星期数

SELECTWEEKDAY("2021-06-14")as'星期';

sql和excel数据分析(从零开始学SQL数据分析)(17)

返回当前是星期几用WEEKDAY函数,如果返回结果为0 表示当前是星期一,返回结果为1 表示当前是星期二。

三、时间作差

3.1 返回结束日期减去开始日期的天数

select datediff('2021-06-14','2021-01-01') as '间隔天数';

sql和excel数据分析(从零开始学SQL数据分析)(18)

返回结束日期减去开始日期的结果,这里使用datediff函数,与在EXCEL中的用法一致,结束日期放前面。

select unix_timestamp('2021-06-14 21:52:12')-unix_timestamp('2021-06-14 20:33:33') as '间隔时间';

sql和excel数据分析(从零开始学SQL数据分析)(19)

返回时间戳的间隔使用到unix_timestamp函数,作差即可。

,