MySQL日期时间函数知识汇总

1. 获取时间

函数 功能 返回格式
curdate(), current_date() 返回当前日期,只包含年、月、日 2022-03-08
curtime(), current_time() 返回当前时间,只包含时、分、秒 19:35:46
now(), sysdate(), current_timestamp(), localtime(), localtimestamp() 返回当前系统日期和时间 2022-03-08 19:37:07
utc_date() 返回utc(世界标准时间)日期 2022-03-08
utc_time() 返回utc(世界标准时间)时间 11:38:52

2. 日期与时间戳的转换

函数 功能 返回格式
unix_timestamp(), unix_timestamp(now()) 以unix时间戳的形式返回当前时间 1646739875
from_unixtime(1646739875) 将unix时间戳转换为普通时间格式 2022-03-08 19:44:35

3. 获取月份、星期、星期数、天数等函数

函数 功能 返回格式
year(now()),/month(now()),/day(now()) 返回年/月/日 2022/3/8
hour(now()), /month(now()), /day(now()) 返回时/分/秒 19/3/8
monthname(now()) 返回英文月份 march
dayname(now()) 返回星期几 tuesday
weekday(now()) 返回周几(从0开始) 1(星期二)
quarter(now()) 返回日期对应的季度,范围1-4 1
week(now()), weekofyear(now()) 返回一年中的第几周 10
dayofyear(now()) 返回一年中的第几天 67
dayofmonth(now()) 返回所在月份中的第几天 8
dayofweek(now()) 返回周几(周日为1) 3(星期二)

4. 日期的操作函数

-- 返回指定日期中的特定部分,type指定返回的值;
select extract(type from now()) from dual;

type的含义与取值:

type取值 含义 返回值
microsecond 返回毫秒数  
second 返回秒数 12
minute 返回分钟数 25
hour 返回小时数 20(24小时制)
day 返回天数 8
week 返回日期在一年中的第几个星期 10
month 返回日期在一年中的第几个月 3
quarter 返回日期在一年中和第几个季度 1
year 返回日期的年份 2022
second_microsecond 返回秒和毫秒值 34000000
minute_microsecond 返回分钟和毫秒值 3716000000
minute_second 返回分钟和秒值 3851(2022-03-08 20:38:51)
hour_microsecond 返回小时和毫秒值 203944000000(2022-03-08 20:39:44)
hour_second 返回小时和秒值 204025(2022-03-08 20:40:25)
hour_minute 返回小时和分钟值 2040(2022-03-08 20:40:52)
day_microsecond 返回天和毫秒值 204126000000(2022-03-08 20:41:26)
day_second 返回天和秒值 204208(2022-03-08 20:42:08)
day_minute 返回天和分钟值 2043(2022-03-08 20:43:17)
day_hour 返回天和小时 20(2022-03-08 20:43:54)
year_month 返回年和月 202203(2022-03-08 20:44:23)

5. 时钟和秒钟转换的函数

-- 将time转化为秒并返回结果值,转化公式为:小时*3600*分钟*69+秒
select time_to_sec('2022-03-08 20:44:23')
from dual;
-- 转换结果:74663

-- seconds转化为时分秒
select sec_to_time(74663) from dual;  
-- 转换结果:20:44:23

6. 计算日期和时间的函数

6.1 计算时间间隔

函数 功能 备注
date_add(datetime, interval expr type),adddate(datetime, interval expr type) 计算时间间隔(时间增加) expr表示时间间隔,type值见下表
date_sub(datetime, interval expr type),subdate(datetime, interval expr type) 计算时间间隔(时间减少) expr表示时间间隔,type值见下表

举例:

select date_add('2022-03-08 20:43:54', interval 2 day) as a from dual;
select adddate('2022-03-08 20:43:54', interval 2 day) as b from dual;
-- 返回相同结果:2022-03-10 20:43:54


select date_sub('2022-03-08 20:43:54', interval 2 day) c from dual;
select subdate('2022-03-08 20:43:54', interval 2 day) d from dual;
-- 返回相同结果:2022-03-06 20:43:54


-- 间隔两和类型的时间时可以用冒号和下划线,要用单引号
select date_add('2022-03-08 20:43:54', interval '2:2' day_hour ) as a from dual;
select date_add('2022-03-08 20:43:54', interval '2_2' day_hour ) as a from dual;
-- 返回相同结果:2022-03-10 22:43:54

type值如下表:

type间隔类型 含义
hour 小时
minute 分钟
second
year
month
day
year_month 年和月
day_hour 日和小时
day_minute 日和分钟
day_second 日和秒
hour_minute 小时和分钟
hour_second 小时和秒
minute_second 分钟和秒

6.2 时间计算

函数 功能 返回格式
addtime(time1, expr) 添加expr到time1并返回结果 2022-03-09 21:44:55
subtime(time2, expr) time1减去expr并返回结果 2022-03-07 19:42:53
datediff(time1, time2) 返回time1与time2的日期间隔(time1-time2) -1(天)
timediff(time1, time2) 返回time1与time2的时间间隔(time1-time2) 26:03:45(时分秒)
from_days(n) 返回从0000年1月1日起,n天以后的日期 0002-09-27
to_days(time) 返回时间time距离0000年1月1日的天数 738588
last_day(time) 返回time所在月份的最后一天的日期 2022-03-31
makedate(year, n) 针对给定年份与所在年份中的天数返回一个日期 2022-04-10
maketime(h, m, s) 将给定的小时、分钟和秒组合成时间并返回 10:20:33
period_add(time,n) 此函数将给定时期的给定月份数添加到格式yymm或yyyymm中 20220309

举例:

select date_add('2022-03-08 20:43:54', interval '2:2' day_hour ) as a from dual;
-- 返回:2022-03-10 22:43:54

select addtime('2022-03-08 20:43:54', '1 1:1:1') from dual;
-- 返回:2022-03-09 21:44:55

select subtime('2022-03-08 20:43:54', '1 1:1:1') from dual;
-- 返回:2022-03-07 19:42:53

select datediff('2022-03-08 20:43:54', '2022-03-09 20:43:54') as a from dual;
-- 返回:-1

select timediff('2022-03-09 20:43:54', '2022-03-08 18:40:09') as b from dual;
-- 返回:26:03:45

select from_days(1000) from dual;
-- 返回:0002-09-27

select to_days('2022-03-09 20:43:54') from dual;
-- 返回:738588

select last_day('2022-03-09 20:43:54') from dual;
-- 返回:2022-03-31

select makedate(2022, 100) from dual;
-- 返回:2022-04-10

select maketime(10, 20, 33) from dual;
-- 返回:10:20:33

select period_add(20220308,1) from dual;
-- 返回:20220309

7. 日期的格式化与解析

函数 功能 返回格式
date_format(date,fmt) 按照字符串fmt格式化日期date值  
time_format(time,fmt) 按照字符串fmt格式化时间time值  
str_to_date(str, fmt) 按照字符串fmt对str进行解析,解析为一个日期  

fmt格式如下:

格式符 说明 格式符 说明
%y 4位数字表示年份 %y 表示两位数字的年份
%m 月名表示月份(january,….) %m 两位数字表示月份
%b 缩写的月名(jan.,feb.,….) %d 两位数字表示月中的天数
%d 英文后缀表示月中的天数(1st,2nd,3rd,…) %c 数字表示月份(1,2,3。。)
%e 数字形式表示月中的天数(1,2,3,4,5…..) %h 两位数字表示小时,12小时制(01,02。。)
%h 两位数字表示小数,24小时制(01,02..) %l 数字形式表示小时,12小时制(1,2。。)
%k 数字形式的小时,24小时制(1,2,3) %s和%s 两位数字表示秒(00, 01, 02。。)
%i 两位数字表示分钟(00,01,02) %a 一周中的星期缩写(sun)
%w 一周中的星期名称(sunday…)    
%w 以数字表示周中的天数(0=sunday,1=monday….)    
%j 以3位数字表示年中的天数(001,002…) %u 以数字表示年中的第几周,(1,2,3。。)其中sunday为周中第一天
%u 以数字表示年中的第几周,(1,2,3。。)其中monday为周中第一天    
%t 24小时制 %r 12小时制
%p am或pm %% 表示%

举例如下:

 select date_format(now(), '%h:%i:%s');
 -- 返回结果:09:58:12
函数 功能 返回格式
get_format(date_type,format_type) 返回日期字符串的显示格式  

format_type取值如下:

举例如下:

 select get_format(date, 'usa');
 -- 返回:%m.%d.%y

到此这篇关于mysql日期时间函数知识汇总的文章就介绍到这了,更多相关mysql日期时间函数内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐