在我的一个项目中,我使用函数STR_TO_DATE()
将字符串转换为基于fmt格式字符串的日期值。例如将字符串转换为日期值:STR_TO_DATE()对某些TIME值返回NULL
SELECT STR_TO_DATE('21-5-2013','%d-%m-%Y'); // returns 2013-05-21
但是当我去到一个时间字符串转换为时间值,我得到一些奇怪的行为:
SELECT STR_TO_DATE('203005','%h%i%s'); // returns null
SELECT STR_TO_DATE('19:30:05','%h:%i:%s'); // returns null
SELECT STR_TO_DATE('113005','%h%i%s'); // returns 11:30:05
SELECT STR_TO_DATE('01:30:05','%h:%i:%s'); // returns 01:30:05
答案之一我在StackOverflow中发现here是:
这的确是因为SQL模式NO_ZERO_DATE。
但我仍然对函数的行为很感兴趣。您可以通过以下方式轻松检查我在说什么link
我必须复制/粘贴'选择STR_TO_DATE('19:30:05' , '%H:%I:%s' 的);'所提议的你和我仍然得到'null'任何想法,为什么?它适用于带日期值的字符串,但不适用于时间值 – awavi
您可以检查w3schools,它的工作原理。 [https://www.w3schools.com/sql/trymysql.asp?filename=trysql_func_mysql_str_to_date](https://www.w3schools.com/sql/trymysql.asp?filename=trysql_func_mysql_str_to_date) 你也可以看到所有不同的您可以通过下面的链接[http://www.sqlines.com/mysql/functions/str_to_date](http://www.sqlines.com/mysql/functions/str_to_date)来编写这些方法。检查你的格式是否没有正确传递 –