MySQL STR“u TO”DATE以“a”结尾;0“;(零)
MySQL STR“u TO”DATE以“a”结尾;0“;(零),mysql,zero,str-to-date,Mysql,Zero,Str To Date,选择STR_TO_DATE('1.1.2000 0:00:00','%e.%c.%Y')将以2000-01-01 但当我试图对值为1.1.2000 0:00:00的列执行相同操作时,请运行 SELECT FirstDisplayedDate, FirstDisplayedDate = STR_TO_DATE(FirstDisplayedDate,'%e.%c.%Y') FROM product 我将在每一行得到零(不是空!) 我做错了什么(函数STR\u TO\u DATE()是DATE\u
选择STR_TO_DATE('1.1.2000 0:00:00','%e.%c.%Y')
将以2000-01-01
但当我试图对值为1.1.2000 0:00:00的列执行相同操作时,请运行
SELECT
FirstDisplayedDate,
FirstDisplayedDate = STR_TO_DATE(FirstDisplayedDate,'%e.%c.%Y')
FROM product
我将在每一行得到零(不是空!)
我做错了什么(函数STR\u TO\u DATE()
是DATE\u FORMAT()
函数的逆函数。它采用字符串STR
和格式字符串格式
STR_TO_DATE()
如果格式字符串同时包含日期和时间部分,则返回DATETIME
值;如果字符串仅包含日期或时间部分,则返回DATE
或time
值
如果从str
中提取的日期、时间或日期时间值非法,str\u TO\u date()
返回NULL
,并产生警告
服务器扫描str
试图将格式与之匹配。格式字符串可以包含文字字符和以%
开头的格式说明符。格式中的文字字符必须与str
中的文字字符进行匹配。格式中的格式说明符必须matchstr
中的日期或时间部分
并且,获取零的原因是未指定的日期或时间部分的值为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'
检查查询中用于日期/时间匹配的格式,并确保数据库行包含字符串,这些字符串可以转换为日期,并且不会将函数的输出值分配给同一数据库字段:
SELECT
FirstDisplayedDate,
STR_TO_DATE(FirstDisplayedDate,'%e.%c.%Y') AS Converted
FROM product
以及如何正确使用该函数的更多信息。您得到了您编写的内容:FirstDisplayedDate=STR_to_DATE(FirstDisplayedDate,%e.%c.%Y')
将FirstDisplayedDate
与STR to_DATE(FirstDisplayedDate,%e.%c.%Y')进行比较
如果它们不相等,则返回零。我认为您希望在此处使用别名,以便:
SELECT
FirstDisplayedDate,
STR_TO_DATE(FirstDisplayedDate,'%e.%c.%Y') AS FirstDisplayedDate2
FROM product