MySQL必会四大函数-时间函数

时间函数是大家在进行SQL查询时经常会接触到一类函数,同时他也是MySQL必会的四大函数之一,其中最常用到的函数是对于某一个时间戳我们获取想要的一部分,例如year()、month()等,这些函数可以帮助我们提高查询效率,用更加简洁易懂的形式实现一些需要复杂功能才能过实现的查询。


一、时间日期获取函数

获取当前日期(date)函数:curdate()

mysql> select curdate(); 2023-02-09

获取当前时间(time)函数:curtime()

select curtime(); 08:49:27

获取当前时间戳(date & time)函数:now()、sysdate()、current_timestamp、 current_timestamp()

select now(); 2023-02-09 08:51:04
select sysdate(); 2023-02-09 08:51:04
select current_timestamp,current_timestamp(); 
2023-02-09 08:53:42,2023-02-09 08:53:42

对于时间戳‘2023-02-09 08:51:04’,分别获取其年、月、日、时、分、秒 

SELECT EXTRACT(YEAR FROM NOW()); # 2023
SELECT EXTRACT(MONTH FROM NOW()); # 2
SELECT EXTRACT(DAY FROM NOW()); # 9
SELECT EXTRACT(HOUR FROM NOW()); # 9
SELECT EXTRACT(MINUTE FROM NOW()); # 5
SELECT EXTRACT(SECOND FROM NOW()); # 30

select year(now());
select month(now());
select day(now());
select hour(now());
select minute(now());
select second(now())

二、时间日期转换函数

字符串转换为日期 函数:str_to_date(str, format)

select str_to_date('07/24/2020', '%m/%d/%Y'); -- 2020-07-24
select str_to_date('07/24/2020' , '%m/%d/%y'); -- 2020-07-24
select str_to_date('07.24.2020', '%m.%d.%Y'); -- 2020-07-24
select str_to_date('11:32:24', '%h:%i:%s'); -- 11:32:24
select str_to_date('07.24.2020 11:32:24', '%m.%d.%Y %h:%i:%s'); -- 2020-07-24 11:32:24

日期/时间转换为字符串 函数:date_format(date,format), time_format(time,format)

select date_format(now(), '%Y-%m-%d %H:%i:%s'); 2023-02-09 09:16:16
select date_format(now(), '%Y@%m@%d %H:%i:%s'); 2023@02@09 09:16:16

日期/天数转换 函数:to_days(date), from_days(days)

select to_days('0000-00-00'); -- 0(日期转换为天数)
select to_days('2020-07-24'); -- 737995(日期转换为天数)
select from_days(0); -- 0000-00-00(天数转换为日期)
select from_days(737995); -- 2020-07-24(天数转换为日期)

时间/秒转换 函数:time_to_sec(time), sec_to_time(seconds)

select time_to_sec('01:00:05'); -- 3605(时间转换为秒数)
select sec_to_time(3605); -- 01:00:05(秒数转换为时间)

拼凑日期/时间 函数:makdedate(year,dayofyear), maketime(hour,minute,second)

select makedate(2020,31); -- 2020-01-3(拼凑日期)
select makedate(2020,32); -- 2020-02-01(拼凑日期)
select maketime(12,15,30); -- 12:15:30(拼凑时间)

Unix时间戳/日期 转换函数

unix_timestamp(),
unix_timestamp(date),
from_unixtime(unix_timestamp),
from_unixtime(unix_timestamp,format)

select unix_timestamp(); -- 1595563223
select unix_timestamp('2020-07-24'); -- 1595520000
select unix_timestamp('2020-07-24 12:02:05'); -- 1595563325
select from_unixtime(1595563223); -- 2020-07-24 12:00:23
select from_unixtime(1595520000); -- 2020-07-24 00:00:00
select from_unixtime(1595563325); -- 2020-07-24 12:02:05
select from_unixtime(1595563325, '%Y %D %M %h:%i:%s %x'); -- 2020 24th July 12:02:05 2020

 三、时间日期计算函数

为日期增加一个时间间隔:date_add()

set @dt = now();

select date_add(@dt, interval 1 day); -- add 1 day
select date_add(@dt, interval 1 hour); -- add 1 hour
select date_add(@dt, interval 1 minute); -- ...
select date_add(@dt, interval 1 second);
select date_add(@dt, interval 1 microsecond);
select date_add(@dt, interval 1 week);
select date_add(@dt, interval 1 month);
select date_add(@dt, interval 1 quarter);
select date_add(@dt, interval 1 year);

select date_add(@dt, interval -1 day); -- sub 1 day
mysql> set @dt = '2020-07-24 12:02:05';
mysql> select date_add(@dt, interval '01:15:30' hour_second);
+------------------------------------------------+
| date_add(@dt, interval '01:15:30' hour_second) |
+------------------------------------------------+
| 2020-07-24 13:17:35                            |
+------------------------------------------------+
mysql> select date_add(@dt, interval '1 01:15:30' day_second);
+-------------------------------------------------+
| date_add(@dt, interval '1 01:15:30' day_second) |
+-------------------------------------------------+
| 2020-07-25 13:17:35                             |
+-------------------------------------------------+

为日期减去一个时间间隔:date_sub()

mysql> select date_sub('2020-07-24 12:02:05', interval '1 1:1:1' day_second);
+----------------------------------------------------------------+
| date_sub('2020-07-24 12:02:05', interval '1 1:1:1' day_second) |
+----------------------------------------------------------------+
| 2020-07-23 11:01:04                                            |
+----------------------------------------------------------------+

日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)

mysql> select datediff('2020-07-08', '2020-07-01'); -- 7
mysql> select datediff('2020-07-01', '2020-07-08'); -- -7
mysql> select timediff('2020-07-24 13:17:35', '2020-07-24 00:00:00'); -- 13:17:35
mysql> select timediff('13:17:35', '00:00:00'); -- 13:17:35

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Weber77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值