SQL DATE_FORMAT() 函數


參照原文:https://blog.csdn.net/moakun/article/details/82290387

DATE_FORMAT() 函數用於以不同的格式顯示日期/時間數據

MySQL 使用下列數據類型在數據庫中存儲日期或日期/時間值:

  • DATE - 格式 YYYY-MM-DD
  • DATETIME - 格式: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
  • YEAR - 格式 YYYY 或 YY

DATE_FORMAT()函數接受兩個參數:

  • date:是要格式化的有效日期值
  • format:是由預定義的說明符組成的格式字符串,每個說明符前面都有一個百分比字符(%)

精確到s:'%Y-%m-%d %h:%i:%s'

舉例說明:

查詢日期范圍在20190125當天的數據

SELECT
*
FROM
tb_course_plan tp
WHERE tp.`city_code` = '010'
AND DATE_FORMAT (tp.`attendance_time`,'%Y-%m-%d') = '2019-01-25'

 

將考勤時間轉化精確到天即可

SELECT
tp.`biz_id`,
tp.`attendance_status`,
tp.`attendance_time`,
DATE_FORMAT(tp.`attendance_time`,'%Y-%m-%d') attdate
FROM tb_course_plan tp
WHERE tp.`day`='2019-1-25'

要選擇訂單的數據並格式化日期值

SELECT
orderNumber,
DATE_FORMAT(shippeddate, '%W %D %M %Y') shippeddate
FROM
orders
WHERE
shippeddate IS NOT NULL
ORDER BY shippeddate;

MySQL DATE_FORMAT與ORDER BY

SELECT
orderNumber,
DATE_FORMAT(shippeddate, '%W %D %M %Y') shippeddate
FROM
orders
WHERE
shippeddate IS NOT NULL
ORDER BY shippeddate;

在查詢中,我們選擇了發貨日期不為NULL的所有訂單,並按發貨日期對訂單進行排序。但是,訂單未正確排序

原因是將shippingdate用作DATE_FORMAT函數的輸出的別名,它是一個字符串,ORDER BY子句根據字符串值,而不是日期值對別名進行排序。

要解決這個問題,我們必須使用不同於列名的別名; 見下:

 SELECT 

orderNumber,
DATE_FORMAT(shippeddate, '%W %D %M %Y') 'Shipped date'
FROM
orders
WHERE
shippeddate IS NOT NULL
ORDER BY shippeddate;

 

下表說明了可用於構建日期格式字符串的說明符及其含義:

限定符 含義
%a 三個字符縮寫的工作日名稱,例如:MonTueWed,等
%b 三個字符縮寫的月份名稱,例如:JanFebMar
%c 以數字表示的月份值,例如:1, 2, 3…12
%D 英文后綴如:0th1st2nd等的一個月之中的第幾天
%d 如果是1個數字(小於10),那么一個月之中的第幾天表示為加前導加0, 如:00, 01,02, …31
%e 沒有前導零的月份的日子,例如:1,2,… 31
%f 微秒,范圍在000000..999999
%H 24小時格式的小時,前導加0,例如:00,01..23
%h 小時,12小時格式,帶前導零,例如:01,02 … 12
%I %h相同
%i 分數為零,例如:00,01,… 59
%j 一年中的的第幾天,前導為0,例如,001,002,… 366
%k 24小時格式的小時,無前導零,例如:0,1,2 … 23
%l 12小時格式的小時,無前導零,例如:0,1,2 … 12
%M 月份全名稱,例如:January, February,…December
%m 具有前導零的月份名稱,例如:00,01,02,… 12
%p AMPM,取決於其他時間說明符
%r 表示時間,12小時格式hh:mm:ss AMPM
%S 表示秒,前導零,如:00,01,… 59
%s %S相同
%T 表示時間,24小時格式hh:mm:ss
%U 周的第一天是星期日,例如:00,01,02 … 53時,前導零的周數
%u 周的第一天是星期一,例如:00,01,02 … 53時,前導零的周數
%V %U相同,它與%X一起使用
%v %u相同,它與%x一起使用
%W 工作日的全稱,例如:Sunday, Monday,…, Saturday
%w 工作日,以數字來表示(0 = 星期日,1 = 星期一等)
%X 周的四位數表示年份,第一天是星期日; 經常與%V一起使用
%x 周的四位數表示年份,第一天是星期日; 經常與%v一起使用
%Y 表示年份,四位數,例如2000,2001,…等。
%y 表示年份,兩位數,例如00,01,…等。
%% 將百分比(%)字符添加到輸出

以下是一些常用的日期格式字符串

DATE_FORMAT字符串 格式化日期
%Y-%m-%d 2017/4/30
%e/%c/%Y 4/7/2013
%c/%e/%Y 7/4/2013
%d/%m/%Y 4/7/2013
%m/%d/%Y 7/4/2013
%e/%c/%Y %H:%i 4/7/2013 11:20
%c/%e/%Y %H:%i 7/4/2013 11:20
%d/%m/%Y %H:%i 4/7/2013 11:20
%m/%d/%Y %H:%i 7/4/2013 11:20
%e/%c/%Y %T 4/7/2013 11:20
%c/%e/%Y %T 7/4/2013 11:20
%d/%m/%Y %T 4/7/2013 11:20
%m/%d/%Y %T 7/4/2013 11:20
%a %D %b %Y Thu 4th Jul 2013
%a %D %b %Y %H:%i Thu 4th Jul 2013 11:20
%a %D %b %Y %T Thu 4th Jul 2013 11:20:05
%a %b %e %Y Thu Jul 4 2013
%a %b %e %Y %H:%i Thu Jul 4 2013 11:20
%a %b %e %Y %T Thu Jul 4 2013 11:20:05
%W %D %M %Y Thursday 4th July 2013
%W %D %M %Y %H:%i Thursday 4th July 2013 11:20
%W %D %M %Y %T Thursday 4th July 2013 11:20:05
%l:%i %p %b %e, %Y 7/4/2013 11:20
%M %e, %Y 4-Jul-13
%a, %d %b %Y %T Thu, 04 Jul 2013 11:20:05


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM