STR_TO_DATE
声明
STR_TO_DATE(str, format)
说明
使用 format 将 str 转换为 DATETIME 值、DATE 值或 TIME 值。返回值类型取决于 format 包含日期时间的哪些部分。
-
如果
str或format为NULL,则该函数返回NULL。 -
如果
str非有效的日期格式,则返回值会根据sql_mode的设置有所不同:-
sql_mode包含了NO_ZERO_IN_DATE:返回NULL。 -
sql_mode不包含NO_ZERO_IN_DATE:-
如果
str为 INT 类型,并且str< 0,则返回0000-00-00 00:00:00,并提示 Warning。SELECT STR_TO_DATE(-100,'%Y-%b-%D %r');
+---------------------------------+
| STR_TO_DATE(-100,'%Y-%b-%D %r') |
+---------------------------------+
| 0000-00-00 00:00:00 |
+---------------------------------+
1 row in set, 1 warning (0.001 sec) -
如果
str为 INT 类型,并且 0 ≤str≤ 69,则返回NULL,并提示 Warning。SELECT STR_TO_DATE(0,'%Y-%b-%D %r');
+------------------------------+
| STR_TO_DATE(0,'%Y-%b-%D %r') |
+------------------------------+
| NULL |
+------------------------------+
1 row in set, 1 warning (0.000 sec) -
如果
str为 INT 类型,并且 69 <str≤ 99,则返回NULL,并提示 Warning。SELECT STR_TO_DATE(88,'%Y-%b-%D %r');
+-------------------------------+
| STR_TO_DATE(88,'%Y-%b-%D %r') |
+-------------------------------+
| NULL |
+-------------------------------+
1 row in set, 1 warning (0.000 sec) -
如果
str为 INT 类型,并且 100 <str≤ 9999,则返回NULL,并提示 Warning。SELECT STR_TO_DATE(2088,'%Y-%b-%D %r');
+---------------------------------+
| STR_TO_DATE(2088,'%Y-%b-%D %r') |
+---------------------------------+
| NULL |
+---------------------------------+
1 row in set, 1 warning (0.000 sec) -
如果
str为 INT 类型,并且str> 10000,则返回NULL,并提示 Warning。SELECT STR_TO_DATE(10001,'%Y-%b-%D %r');
+----------------------------------+
| STR_TO_DATE(10001,'%Y-%b-%D %r') |
+----------------------------------+
| NULL |
+----------------------------------+
1 row in set, 1 warning (0.000 sec) -
如果
str为字符串,则会将字符串尽可能转换为日期时间,并返回1999-11-30 00:00:00加str作为类型的日期时间;如果不能转换为日期时间,则返回NULL。SELECT STR_TO_DATE('a2014-Jan-1st 5:5:5 pm', '%Y-%b-%D %r');
+------------------------------------------------------+
| STR_TO_DATE('a2014-Jan-1st 5:5:5 pm', '%Y-%b-%D %r') |
+------------------------------------------------------+
| NULL |
+------------------------------------------------------+
1 row in set, 1 warning (0.001 sec)
SELECT STR_TO_DATE('a2014-Jan-1st 5:5:5 pm', 'a%Y-%b-%D %r');
+-------------------------------------------------------+
| STR_TO_DATE('a2014-Jan-1st 5:5:5 pm', 'a%Y-%b-%D %r') |
+-------------------------------------------------------+
| 2014-01-01 05:05:05 |
+-------------------------------------------------------+
1 row in set (0.001 sec) -
如果
str为其他类型,则返回NULL,并提示 Warning。SELECT STR_TO_DATE(1.6,'%Y-%b-%D %r');
+--------------------------------+
| STR_TO_DATE(1.6,'%Y-%b-%D %r') |
+--------------------------------+
| NULL |
+--------------------------------+
1 row in set, 1 warning (0.001 sec)
SELECT STR_TO_DATE(pi(),'%Y-%b-%D %r');
+---------------------------------+
| STR_TO_DATE(pi(),'%Y-%b-%D %r') |
+---------------------------------+
| NULL |
+---------------------------------+
1 row in set, 1 warning (0.001 sec)
-
-
有关 format 支持的格式,请参见 DATE_FORMAT。
示例
SELECT STR_TO_DATE('2014-Jan-1st 5:5:5 pm', '%Y-%b-%D %r');
+-----------------------------------------------------+
| STR_TO_DATE('2014-Jan-1st 5:5:5 pm', '%Y-%b-%D %r') |
+-----------------------------------------------------+
| 2014-01-01 05:05:05 |
+-----------------------------------------------------+
1 row in set (0.000 sec)