mysql日期相关函数使用
最近要经常用到mysql的日期相关函数,但以前用的少,索性总结下
1 DATE_FORMAT(date,format)、TIME_FORMAT(time,format)
published_at字段以datetime类型存储
format格式
%a | 缩写星期名 |
%b | 缩写月名 |
%c | 月,数值 |
%D | 带有英文前缀的月中的天 |
%d | 月的天,数值(00-31) |
%e | 月的天,数值(0-31) |
%f | 微秒 |
%H | 小时 (00-23) |
%h | 小时 (01-12) |
%I | 小时 (01-12) |
%i | 分钟,数值(00-59) |
%j | 年的天 (001-366) |
%k | 小时 (0-23) |
%l | 小时 (1-12) |
%M | 月名 |
%m | 月,数值(00-12) |
%p | AM 或 PM |
%r | 时间,12-小时(hh:mm:ss AM 或 PM) |
%S | 秒(00-59) |
%s | 秒(00-59) |
%T | 时间, 24-小时 (hh:mm:ss) |
%U | 周 (00-53) 星期日是一周的第一天 |
%u | 周 (00-53) 星期一是一周的第一天 |
%V | 周 (01-53) 星期日是一周的第一天,与 %X 使用 |
%v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
%W | 星期名 |
%w | 周的天 (0=星期日, 6=星期六) |
%X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
%x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
%Y | 年,4 位 |
%y | 年,2 位 |
SELECT title,published_at,DATE_FORMAT(published_at,'%Y-%m-%d'),TIME_FORMAT(published_at,'%r') FROM blog_note WHERE DATE_FORMAT(published_at,'%Y-%m')='2023-09'
2 STR_TO_DATE(str,format)
SELECT title,STR_TO_DATE(published_at,'%Y-%m-%d') FROM blog_note
3 DATE(datetime)、YEAR(datetime)
4 UNIX_TIMESTAMP(date)、FROM_UNIXTIME(timestamp,format)
SELECT title,published_at,UNIX_TIMESTAMP(published_at) ,FROM_UNIXTIME(UNIX_TIMESTAMP(published_at) ,'%Y-%m-%d %H:%i:%s') FROM blog_note
5 CURRENT_DATE()、CURRENT_TIME()、CURRENT_TIMESTAMP()
SELECT CURDATE(),CURRENT_DATE(),CURRENT_DATE
SELECT CURTIME(),CURRENT_TIME,CURRENT_TIME(),CURRENT_TIMESTAMP(),LOCALTIME(),LOCALTIMESTAMP(),NOW(),SYSDATE()
6 DATE_ADD(date,interval)、DATE_SUB(date,interval)
SELECT CURRENT_DATE(),DATE_ADD(CURRENT_DATE(),INTERVAL 1 DAY) ,DATE_ADD(CURRENT_DATE(),INTERVAL -1 DAY) ,DATE_SUB(CURRENT_DATE(),INTERVAL -1 DAY)
SELECT DATE_ADD(CURRENT_DATE(),INTERVAL 1 MONTH) ,DATE_ADD('2023-12-01',INTERVAL 1 DAY)
,DATE_ADD(NOW(),INTERVAL '1::20:30' HOUR_SECOND),DATE_ADD(NOW(),INTERVAL '1::20' YEAR_MONTH)
7 DAYOFMONTH(date)、DAYOFYEAR(date)
SELECT published_at,DAYNAME(published_at),MONTHNAME(published_at),DAYOFMONTH(published_at),DAYOFWEEK(published_at),DAYOFYEAR(published_at),LAST_DAY(published_at) FROM `blog_note`
SELECT published_at,WEEK(published_at),WEEKDAY(published_at),WEEKOFYEAR(published_at) FROM `blog_note`
8 DATEDIFF(date1,date2)、TIMEDIFF(time1,time2)
SELECT DATEDIFF('2024-01-02','2023-12-30'),TIMEDIFF('10:30:00','09:30:00'),PERIOD_ADD(202401,3),PERIOD_DIFF(202401,202310),SUBDATE(20240102,5)
9 TIME_TO_SEC(time)、SEC_TO_TIME(seconds)、
SELECT TIME_TO_SEC("10:30:00"),SEC_TO_TIME(TIME_TO_SEC("10:30:00"))
select TO_DAYS(NOW()),FROM_DAYS(TO_DAYS(NOW())),TO_DAYS('0000-01-01')
10 MAKE_DATE(year,day of year)、MAKETIME(hour,minute,second)
select makedate(2024,32),maketime(12,15,30);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix