STR_TO_DATE(str,format)
这是DATE_FORMAT()函数的逆。它采用字符串str和格式字符串格式。如果格式字符串同时包含日期和时间部分,则STR_TO_DATE()返回DATETIME值;如果字符串仅包含日期或时间部分,则返回DATE或TIME值。如果从str中提取的日期,时间或日期时间值不合法,则STR_TO_DATE()返回NULL并产生警告。
服务器扫描str尝试匹配格式。格式字符串可以包含以%开头的文字字符和格式说明符。格式中的文字字符必须在字符串中匹配。格式中的格式说明符必须与str中的日期或时间部分匹配。对于格式中可以使用的说明符,请参阅DATE_FORMAT()函数说明。
mysql> SELECT STR_TO_DATE('01,5,2013','%d,%m,%Y');
-> '2013-05-01'
mysql> SELECT STR_TO_DATE('May 1, 2013','%M %d,%Y');
-> '2013-05-01'
扫描从str开头开始,如果发现格式不匹配,则失败。 str结尾的额外字符被忽略。
mysql> SELECT STR_TO_DATE('a09:30:17','a%h:%i:%s');
-> '09:30:17'
mysql> SELECT STR_TO_DATE('a09:30:17','%h:%i:%s');
-> NULL
mysql> SELECT STR_TO_DATE('09:30:17a','%h:%i:%s');
-> '09:30:17'
未指定的日期或时间部分具有为0的值,所以在STR未完全指定的值产生具有一些结果或所有部分设置为0:
mysql> SELECT STR_TO_DATE('abc','abc');
-> '0000-00-00'
mysql> SELECT STR_TO_DATE('9','%m');
-> '0000-09-00'
mysql> SELECT STR_TO_DATE('9','%s');
-> '00:00:09'
范围上的日期的各个部分检查值如第11.3.1节“DATE,DATETIME和TIMESTAMP类型”中所述。这意味着,例如,除非SQL模式被设置为禁止这些值,否则允许“零”日期或部分值为0的日期。
mysql> SELECT STR_TO_DATE('00/00/0000', '%m/%d/%Y');
-> '0000-00-00'
mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');
-> '2004-04-31'
如果NO_ZERO_DATE或NO_ZERO_IN_DATE SQL模式被激活,零日期或日期的一部分是不允许的。在这种情况下,STR_TO_DATE()返回NULL并生成警告。
注: -
您不能使用格式“%X%V”一年为期一周的字符串转换为日期,因为一年一周的组合并不唯一,如果每周确定一个年份和月份跨过一个月的边界。要将年份转换为日期,您还应指定星期几:
mysql> SELECT STR_TO_DATE('200442 Monday', '%X%V %W');
-> '2004-10-18'
他希望在MySQL中使用此工作台并使用mysql工作台;) – Susang
确定。得到它了。我会更新。 –