在本教學中,我們將向您展示如何使用MySQL STR_TO_DATE()
函式將字串轉換為日期時間值。
下面說明了STR_TO_DATE()
函式的語法:
STR_TO_DATE(str,fmt);
STR_TO_DATE()
根據fmt
格式字串將str
字串轉換為日期值。 STR_TO_DATE()
函式可能會根據輸入和格式字串返回DATE
,TIME
或DATETIME
值。 如果輸入字串是非法的,則STR_TO_DATE()
函式返回NULL
。
STR_TO_DATE()
函式掃描輸入字串來匹配格式字串。格式字串可能包含以百分比(%
)字元開頭的文字字元和格式說明符。 檢視格式說明符列表的DATE_FORMAT函式。
STR_TO_DATE()
函式在資料遷移中非常有用,涉及從外部格式到MySQL時間資料格式的時間資料轉換。
我們來看一些使用STR_TO_DATE()
函式將字串轉換成日期和/或時間值的例子。
以下語句將字串轉換為DATE
值,如下所示 -
mysql> SELECT STR_TO_DATE('21,5,2018','%d,%m,%Y');
+-------------------------------------+
| STR_TO_DATE('21,5,2018','%d,%m,%Y') |
+-------------------------------------+
| 2018-05-21 |
+-------------------------------------+
1 row in set
根據格式字串格式'%d,%m,%Y'
,STR_TO_DATE()
函式掃描'21,5,2018'
輸入字串。
%d
格式說明符的匹配項,這是一個月的日期(01 … 31)。 因為21
號與%d
說明符相匹配,所以該函式將21
作為日期值。,
)字串與輸入字串中的逗號匹配,所以函式繼續檢查第二個格式說明符%m
,這是一個月(01 … 12),並且發現數位 5
與%m
格式說明符匹配。以數位5
為月份。STR_TO_DATE()
函式在根據格式字串解析輸入字串時忽略輸入字串末尾的額外字元。 請參閱以下範例:
mysql> SELECT STR_TO_DATE('21,5,2013 extra characters','%d,%m,%Y');
+------------------------------------------------------+
| STR_TO_DATE('21,5,2013 extra characters','%d,%m,%Y') |
+------------------------------------------------------+
| 2013-05-21 |
+------------------------------------------------------+
1 row in set
STR_TO_DATE()
將輸入字串不提供的所有不完整的日期值設定為零。 請參閱以下範例:
mysql> SELECT STR_TO_DATE('2018','%Y');
+--------------------------+
| STR_TO_DATE('2018','%Y') |
+--------------------------+
| NULL |
+--------------------------+
1 row in set
因為輸入字串只提供年值,所以STR_TO_DATE()
函式返回一個日期值,它的月和日設定為零。
以下範例將時間字串轉換為TIME
值:
mysql> SELECT STR_TO_DATE('113005','%h%i%s');
+--------------------------------+
| STR_TO_DATE('113005','%h%i%s') |
+--------------------------------+
| NULL |
+--------------------------------+
1 row in set
類似於未指定的日期部分,STR_TO_DATE()
函式將未指定的時間部分設定為零,請參見以下範例:
mysql> SELECT STR_TO_DATE('11','%h');
+------------------------+
| STR_TO_DATE('11','%h') |
+------------------------+
| NULL |
+------------------------+
1 row in set
以下範例將字串轉換為DATETIME
值,因為輸入字串提供日期和時間部分。
mysql> SELECT STR_TO_DATE('20130101 1130','%Y%m%d %h%i') ;
+--------------------------------------------+
| STR_TO_DATE('20130101 1130','%Y%m%d %h%i') |
+--------------------------------------------+
| 2013-01-01 11:30:00 |
+--------------------------------------------+
1 row in set
在本教學中,我們向您展示了使用MySQL STR_TO_DATE()
函式將字串轉換為日期和時間值的各種範例。