数据库系列之日期和时间函数
日期是指年月日,时间是指时分秒
1 获取当前时刻的数据
1.1 获取当前时刻的日期和时间
SELECT NOW()
result:
1.2 获取当前时刻的日期信息
1.2.1 获取日期
(1)通过curdate()获取
SELECT CURDATE()
result:
(2) 通过now()获取
SELECT DATE(NOW())
result:
1.2.2 获取日期中的年
SELECT YEAR(NOW())
result:
1.2.3 获取日期中的月
SELECT MONTH(NOW())
result:
1.2.4 获取日期中的日
SELECT DAY(NOW())
result:
1.3 获取当前时刻的时间信息
1.3.1 获取当前时刻的时间
(1)通过curtime()获取
SELECT CURTIME()
result:
(2) 通过now()获取
SELECT TIME(NOW())
result:
1.3.2 获取当前时刻的时
SELECT HOUR(NOW())
result:
1.3.3 获取当前时刻的分
SELECT MINUTE(NOW())
result:
1.3.4 获取当前时刻的秒
SELECT SECOND(NOW())
result:
1.4 获取当前时刻的周信息
1.4.1 查看当前时刻是全年中的第几周
SELECT WEEKOFYEAR(NOW())
result:
1.4.2 查看当前时刻是周几
SELECT DAYOFWEEK(NOW())
result:
1.5 获取当前时刻的季度信息
SELECT
QUARTER ( "2019-01-01" ) AS quarter_1,
QUARTER ( "2019-04-01" ) AS quarter_2,
QUARTER ( "2019-07-01" ) AS quarter_3,
QUARTER ( "2019-10-01" ) AS quarter_4
result:
2 日期和时间格式转换
2.1 格式转换
格式转换所使用到的是date_format()函数,其用法如下:
date_format(datetime, format)
其中,datetime表示要转换的具体的日期和时间,format表示要转换的格式
SELECT DATE_FORMAT("2019-12-25", "%Y-%m-%d")
result:
SELECT DATE_FORMAT("2019-1-25", "%Y-%m-%d")
result:
这里注意1和01的区别。原始日期为2019-1-25, 返回结果为2019-01-25
SELECT DATE_FORMAT("2019-1-25 12:30:45", "%H:%i:%S")
result:
2.2 日期提取
这里使用到的是extract()含糊,其形式如下:
extract(unit from datetime)
datetime表示具体的日期时间,unit表示要提取的部分
unit取值如下表:
unit | 说明 |
---|---|
year | 年 |
month | 月 |
day | 日 |
hour | 小时 |
minute | 分钟 |
second | 秒 |
week | 周数,全年第几周 |
SELECT EXTRACT(year FROM "2019-12-23")
result:
3 日期和时间运算
3.1 向后偏移日期和时间
向后偏移用到的是date_add()函数,其形式如下:
date_add(date, interval num unit)
date代表日期时间,interval 为固定参数,num为偏移量, unit为偏移的单位
SELECT
DATE_ADD("2021-01-01 12:34:56",INTERVAL 7 YEAR) AS yaer,
DATE_ADD("2021-01-01 12:34:56",INTERVAL 7 MONTH) AS month,
DATE_ADD("2021-01-01 12:34:56",INTERVAL 7 DAY) AS date,
DATE_ADD("2021-01-01 12:34:56",INTERVAL 7 HOUR) AS hour,
DATE_ADD("2021-01-01 12:34:56",INTERVAL 7 MINUTE) AS minute,
DATE_ADD("2021-01-01 12:34:56",INTERVAL 7 SECOND) AS second
result:
3.2 向前偏移日期和时间
向后偏移用到的是date_sub()函数,其形式如下:
date_sub(date, interval num unit)
date代表日期时间,interval 为固定参数,num为偏移量, unit为偏移的单位
SELECT
DATE_SUB("2021-01-01 12:34:56",INTERVAL 7 YEAR) AS yaer,
DATE_SUB("2021-01-01 12:34:56",INTERVAL 7 MONTH) AS month,
DATE_SUB("2021-01-01 12:34:56",INTERVAL 7 DAY) AS date,
DATE_SUB("2021-01-01 12:34:56",INTERVAL 7 HOUR) AS hour,
DATE_SUB("2021-01-01 12:34:56",INTERVAL 7 MINUTE) AS minute,
DATE_SUB("2021-01-01 12:34:56",INTERVAL 7 SECOND) AS second
result:
3.3 两个日期之间求差
SELECT DATEDIFF("2019-01-07","2019-01-01")
result:
3.4 两个日期之间比较
SELECT
"2019-01-01" > "2019-01-02" as co11,
"2019-01-01" < "2019-01-02" as co12,
"2019-01-01" = "2019-01-02" as co13,
"2019-01-01" != "2019-01-02" as co14
result:
转载自:https://juejin.cn/post/7023953874788548639