MySQL str_to_date()函式

2019-10-16 22:55:14

在本教學中,我們將向您展示如何使用MySQL STR_TO_DATE()函式將字串轉換為日期時間值。

MySQL STR_TO_DATE函式簡介

下面說明了STR_TO_DATE()函式的語法:

STR_TO_DATE(str,fmt);

STR_TO_DATE()根據fmt格式字串將str字串轉換為日期值。 STR_TO_DATE()函式可能會根據輸入和格式字串返回DATETIMEDATETIME值。 如果輸入字串是非法的,則STR_TO_DATE()函式返回NULL

STR_TO_DATE()函式掃描輸入字串來匹配格式字串。格式字串可能包含以百分比(%)字元開頭的文字字元和格式說明符。 檢視格式說明符列表的DATE_FORMAT函式

STR_TO_DATE()函式在資料遷移中非常有用,涉及從外部格式到MySQL時間資料格式的時間資料轉換。

MySQL STR_TO_DATE範例

我們來看一些使用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()函式會繼續找到第三個格式說明符%Y的匹配項,它是四位數的年份,例如2012,2013等,它的編號為2013 年值。

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()函式將字串轉換為日期和時間值的各種範例。