数据库系列之日期和时间函数

1,897 阅读3分钟

日期是指年月日,时间是指时分秒

1 获取当前时刻的数据

1.1 获取当前时刻的日期和时间

SELECT NOW()

result:

image-20210921100418308.png

1.2 获取当前时刻的日期信息

1.2.1 获取日期

(1)通过curdate()获取

SELECT CURDATE()

result:

image-20210921100526482.png

(2) 通过now()获取

SELECT DATE(NOW())

result:

image-20210921100853305.png

1.2.2 获取日期中的年

SELECT YEAR(NOW())

result:

image-20210921103732191.png

1.2.3 获取日期中的月

SELECT MONTH(NOW())

result:

image-20210921103812370.png

1.2.4 获取日期中的日

SELECT DAY(NOW())

result:

image-20210921103906279.png

1.3 获取当前时刻的时间信息

1.3.1 获取当前时刻的时间

(1)通过curtime()获取

SELECT CURTIME()

result:

image-20210921110340864.png

(2) 通过now()获取

SELECT TIME(NOW())

result:

image-20210921110500647.png

1.3.2 获取当前时刻的时

SELECT HOUR(NOW())

result:

image-20210921110544277.png

1.3.3 获取当前时刻的分

SELECT MINUTE(NOW())

result:

image-20210921110623781.png

1.3.4 获取当前时刻的秒

SELECT SECOND(NOW())

result:

image-20210921110702181.png

1.4 获取当前时刻的周信息

1.4.1 查看当前时刻是全年中的第几周

SELECT WEEKOFYEAR(NOW())

result:

image-20210921110936921.png

1.4.2 查看当前时刻是周几

SELECT DAYOFWEEK(NOW())

result:

image-20210921111132292.png

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:

image-20210921111414391.png

2 日期和时间格式转换

2.1 格式转换

格式转换所使用到的是date_format()函数,其用法如下:

date_format(datetime, format)

其中,datetime表示要转换的具体的日期和时间,format表示要转换的格式

SELECT DATE_FORMAT("2019-12-25", "%Y-%m-%d")

result:

image-20210921112519686.png

SELECT DATE_FORMAT("2019-1-25", "%Y-%m-%d")

result:

image-20210921112544398.png

这里注意1和01的区别。原始日期为2019-1-25, 返回结果为2019-01-25

SELECT DATE_FORMAT("2019-1-25 12:30:45", "%H:%i:%S")

result:

image-20210921112907923.png

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:

image-20210921113621844.png

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:

image-20210921115522575.png

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:

image-20210921115704221.png

3.3 两个日期之间求差

SELECT DATEDIFF("2019-01-07","2019-01-01")

result:

image-20210921115929939.png

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:

image-20210921120122008.png