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!