1、日期格式
DATE_FORMAT("20231128", '%Y-%m-%d') -- 2023-11-28
DATE_FORMAT("2023-11-28", '%Y-%m-%d') -- 2023-11-28
DATE_FORMAT('2023-11-28 08:47:23', '%H:%i:%s') -- 08:47:23 (24小时制)
DATE_FORMAT('2023-11-28 08:47:23', '%h:%i:%s') -- 08:47:23(12小时制)
DATE_FORMAT('2023-11-28 08:47:23', '%Y-%m-%d %H:%i:%s') -- 2023-11-28 08:47:23
日期的含义:指的是我们常说的年、月、日。
时间的含义:指的是我们常说的时、分、秒。
补充时间格式符含义表
序号 | 格式符 | 含义 |
1 | %Y | 四位的年份 |
2 | %y | 2位的年份 |
3 | %m | 月份(01,02,..11,12) |
4 | %c | 月份(1,2,3...11,12) |
5 | %d | 日(01,02,03,...) |
6 | %H | 小时(24小时制) |
7 | %h | 小时(12小时制) |
8 | %i | 分钟(00,01,02...59) |
9 | %s | 秒(00,01,02...59) |
2、日期函数
1) now()函数
返回当前系统的日期和时间
演示如下:
select now() as 当前时间 from dual;
2) curdate()函数
只返回系统当前的日期,不包含时间
演示如下:
select curdate() as 当前日期;
3) curtime()函数
只返回当前的时间,不包含日期
演示如下:
select curtime() as 当前日期;
4) 获取日期和时间中的年、月、日、时、分、秒
获取年份:year()
获取月份:month()
获取日:day()
获取小时:hour()
获取分钟:minute()
获取秒数:second()
5) weekofyear()函数
获取当前时刻所属周数
演示如下:
select weekofyear(now()) as 当前时间下的周数;
6) quarter()函数
获取当前时刻所属的季度
select quarter(curdate()) as 当前季度;
7) str_to_date()函数
将日期格式转换为字符串,转换成指定格式的日期
select str_to_date("2023,11,28",'%Y,%c,%d') as 转换后格式;
8) date_format()函数
将日期转换成日期字符串
select date_format("2023/11/28",'%Y年%m月%d日') as 转换后格式;
9) date_add(日期,interval num 时间)函数
向前、向后偏移日期和时间,正号为向后,负号为向前,除此之外还有hour(小时),minute(分钟),second(秒)
select curdate() as 当前时间,
date_add(curdate(),interval 1 year) as 一年后,
date_add(curdate(),interval 1 month) as 一月后,
date_add(curdate(),interval 1 day) as 一天后;
10) last_day()函数
提取某个月最后一天的日期
select last_day(now()) as 当月最后一天的日期;
11) datediff(end_date,start_date)函数
计算两个时间相差的天数
演示如下:
select concat('我出生',datediff(curdate(),'2002-04-08'),'天了!') as 出生天数;
12) timestampdiff(unit,start_date,end_date)函数
计算两个时间返回的年/月/天数;
unit参数是确定(start_date,end_date)结果的单位,表示为整数,以下是有效单位:
year:年份、month:月份、day:天、hour:小时、minute 分钟、second:秒、microsecond:微秒、week:周数、quarter:季度
select timestampdiff(year,'2002-04-08',curdate()) as 年龄;