MySQL中常常會用到對日期的格式化,比如按某時間格式計算間隔,按某時間格式統計信息等等,所以整理了一下日期格式化的參數,可以根據自己的需求進行組合使用。使用例子如下:
(1)SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s');
(2)SELECT DATE_FORMAT('2018-10-22 16:08:07','%Y年%m月%d日 %H時%i分%s秒');
格式化參數如下:
%a 縮寫星期名(Sun-Sat)
%b 縮寫月份名(Jan-Dec)
%c 月份(1-12)
%D 帶有英文后綴的月份中的天(1st-31st)
%d 月份中的天(01-31)
%e 月份中的天(1-31)
%f 微秒
%H 小時,24小時制(00-23)
%h 小時,12小時制(01-12)
%I 小時,12小時制(01-12)
%i 分鍾(00-59)
%j 一年中的天(001-366)
%k 小時,24小時制(0-23)
%l 小時,12小時制(1-12)
%M 月份全名(January-December)
%m 月份(01-12)
%p 12小時標志(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 年份(yyyy) 星期日是周的第一天,與%V使用
%x 年份(yyyy) 星期一是周的第一天,與%v使用
%Y 年份(yyyy)
%y 年份(yy)
PS:使用%U和%u時注意,其中的周計算規則與通常的周計算有所不同,會使用到00周,比如:
(1)2016年1月1日的周信息,用%U獲取為第00周,直到2016年1月3日才是第01周。用%u獲取也為第00周,直到2016年1月4日才是第01周。
(2)2019年1月1日的周信息,用%U獲取為第00周,直到2019年1月6日才是第01周。而用%u獲取為第01周。使用%X%V獲取為2018年的第52周。使用%x%v獲取為2019年的第01周。
因為:
%U對第一周的判斷:星期日為一周的第一天,則必須包含星期日。
%u對第一周的判斷:星期一為一周的第一天,則必須包含星期一,或第一周最少包含4天。