mysql日期相关函数使用
最近要经常用到 mysql 的日期相关函数,但以前用的少,索性总结下
DATE_FORMAT(date,format)、TIME_FORMAT(time,format)
published_at 字段以 datetime 类型存储
format格式


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'
STR_TO_DATE(str,format)
SELECT title,STR_TO_DATE(published_at,'%Y-%m-%d') FROM blog_note
DATE(datetime)、YEAR(datetime)
SELECT published_at,DATE(published_at),TIME(published_at),YEAR(published_at),MONTH(published_at),DAY(published_at),HOUR(published_at),MINUTE(published_at) FROM 'blog_note`
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
CURRENT_DATE()、CURRENT_TIME()、CURRENT_TIMESTAMP()
SELECT CURDATE(),CURRENT_DATE(),CURRENT_DATE
SELECT CURTIME(),CURRENT_TIME,CURRENT_TIME(),CURRENT_TIMESTAMP(),LOCALTIME(),LOCALTIMESTAMP(),NOW(),SYSDATE()
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)
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`
img src="https://img2024.cnblogs.com/blog/705533/202401/705533-20240102094521431-170296505.png" alt="" width="531" height="107" loading="lazy" />
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)
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')
MAKE_DATE(year,day of year)、MAKETIME(hour,minute,second)
select makedate(2024,32),maketime(12,15,30);
浙公网安备 33010602011771号