在使用MySQL資料庫時,經常會進行日期的處理和轉換,這在資料統計、分析和展示中常用到。因此,熟練MySQL日期轉換的方法對於開發人員和資料庫管理員來說是非常重要的。
MySQL提供了豐富的日期函數和語法,可以輕鬆地將日期和時間轉換為不同的格式和字串。本文將重點介紹MySQL日期轉換的語法和範例,並提供一些常見的應用場景和技巧。
在MySQL中,日期和時間都是以預設格式儲存的。預設日期格式為YYYY-MM-DD,時間格式為HH:MM:SS。可以使用DATE_FORMAT()函數將日期和時間轉換為各種格式的字串。
#格式(Format) |
說明 |
#%Y |
四位數字的年份 |
#%y |
兩位數字的年份 |
%m |
兩位數字的月份 |
#%c |
兩位數字的月份,不帶前導零 |
%d |
兩位數字的日子 |
%e |
# 日期,沒有前導零 |
%H |
時(00-23) |
%h |
#(01 -12) |
%i |
兩位數字的分鐘數 |
%s |
#兩位元數字的秒數 |
%p |
"AM" 或"PM" |
##%W | #星期的完整名稱 |
%a | 星期的縮寫 |
%M | 月份的完整名稱 |
%b | 月份的縮寫 |
#%j | 一年中的天數(0 -366) |
%U | 一年中的週數(從星期日算起) |
%u | 一年中的周數(從星期一算起) |
%X | 年份的完整數字,如果是星期日為新的一年的第一天,新的一年將從前一年的最後一個週六開始 |
%V | 一年中的周數(從週一算起),如果這一周是下一年的一部分,那麼這一周將算是新的一年的第一周。 |
日期函數
MySQL提供了許多日期函數,它們可以用於日期和時間的格式轉換、查詢和計算。下面列出了一些常見的日期函數及其描述。
- NOW()
NOW()函數傳回目前日期和時間。它可以用於為資料表中的欄位添加時間戳記。
語法:
SELECT NOW();
結果:
2022-01-01 16:12:07
- DATE_FORMAT()
DATE_FORMAT()函數可以將日期和時間轉換為指定的格式。
語法:
SELECT DATE_FORMAT(date,format);
範例:
SELECT DATE_FORMAT('2022-01-01 16:25:30','%m/%d/%Y %h:%i:%s %p');
結果:
01/01/2022 04:25:30 PM
- DATE()
##DATE( )函數傳回日期值的日期部分。 語法:SELECT DATE(date);
範例:SELECT DATE('2022-01-01 16:30:00');
結果:2022-01-01
DAY()- ##DAY( )函數傳回給定日期的日期部分中的天數。
語法:
SELECT DAY(date);
範例:
SELECT DAY('2022-01-01 16:30:00');
結果:
01
MONTH()- ##MONTH( )函數傳回給定日期的月份。
語法:SELECT MONTH(date);
範例:SELECT MONTH('2022-01-01 16:30:00');
結果:01
YEAR()
##YEAR( )函數傳回給定日期的年份。 - 語法:
SELECT YEAR(date);
範例:
SELECT YEAR('2022-01-01 16:30:00');
結果:
2022
DATE_ADD()
DATE_ADD( )函數用於新增日期和時間值。 - 語法:
SELECT DATE_ADD(date, INTERVAL value unit);
範例:
SELECT DATE_ADD('2022-01-01', INTERVAL 1 MONTH);
結果:
2022-02-01
DATE_DIFF()
DATEDIFF( )函數計算兩個日期之間的天數。 - 語法:
SELECT DATEDIFF(date1,date2);
範例:
SELECT DATEDIFF('2022-01-01','2021-12-31');
結果:
1
STR_TO_DATE()
STR_TO_DATE( )函數將字串轉換為日期格式。 - 語法:
SELECT STR_TO_DATE(str, format);
範例:
SELECT STR_TO_DATE('20220101','%Y%m%d');
結果:
2022-01-01
TIME()##TIME( )函數傳回日期/時間值的時間部分。
- 語法:
SELECT TIME(datetime);
範例:SELECT TIME('2022-01-01 16:45:30');
結果:16:45:30
日期轉換技巧掌握MySQL日期轉換的語法和函數很重要,但是在實際專案中還需要靈活運用。以下介紹一些常見的日期轉換技巧。
計算兩個日期之間差異值
在MySQL中,可以使用DATE_DIFF()、DATEDIFF()、TO_DAYS()等函數計算兩個日期之間的差值。例如,計算兩個日期之間的天數:SELECT DATEDIFF('2022-01-02','2021-12-31') AS days;
- 結果:
2
#將時間戳轉換為日期格式
如果資料庫中的欄位是以時間戳記的形式儲存的,可以使用FROM_UNIXTIME()函數將其轉換為日期格式。 SELECT DATE_FORMAT(FROM_UNIXTIME(timestamp),'%Y-%m-%d %H:%i:%s') AS date FROM tableName;
- 將日期格式轉換為時間戳
如果需要將MySQL中的日期格式轉換為UNIX時間戳,在查詢語句中可以使用UNIX_TIMESTAMP()函數。 SELECT UNIX_TIMESTAMP('2022-01-01 17:00:00') AS timestamp;
- 結果:
1641054000
顯示目前月份和年份
使用DATE_FORMAT()函數可以輕鬆顯示目前月份和年份。 SELECT DATE_FORMAT(NOW(),'%Y年%m月') AS month;
- 結果:
2022年01月
總結MySQL日期轉換對於開發人員和資料庫管理員來說是非常重要的。本文介紹了常見的日期函數和語法,以及一些常見的應用場景和技巧。在實際專案中,需要針對具體情況進行彈性運用,以達到最佳的日期格式和效果。