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);  

 

 

posted @ 2023-12-29 17:17  carol2014  阅读(5)  评论(0编辑  收藏  举报