Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL STR“u TO”DATE以“a”结尾;0“;(零)_Mysql_Zero_Str To Date - Fatal编程技术网

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
中的文字字符进行匹配。格式中的格式说明符必须match
str
中的日期或时间部分

并且,获取零的原因是未指定的日期或时间部分的值为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