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_TO_DATE返回null_Mysql - Fatal编程技术网

MySQL STR_TO_DATE返回null

MySQL STR_TO_DATE返回null,mysql,Mysql,我正在尝试使用STR_to_date函数将格式为mm/dd/yyyy的日期转换为标准日期格式yyyy-mm-dd。“我的日期”列中的某些字段为空,有些字段包含日期 例如,2011年8月22日应该成为2011年8月22日 当我选择日期列时,它如下所示: 8/22/2011 8/10/2010 5/12/2012 等等 我试着使用代码 UPDATE table SET date = STR_TO_DATE(date, '%m/%d/%Y') 它用空值填充列。也试过 UPDATE table SET

我正在尝试使用STR_to_date函数将格式为mm/dd/yyyy的日期转换为标准日期格式yyyy-mm-dd。“我的日期”列中的某些字段为空,有些字段包含日期

例如,2011年8月22日应该成为2011年8月22日

当我选择日期列时,它如下所示: 8/22/2011 8/10/2010 5/12/2012 等等

我试着使用代码

UPDATE table SET date = STR_TO_DATE(date, '%m/%d/%Y')
它用空值填充列。也试过

UPDATE table SET date = STR_TO_DATE(@date, '%m/%d/%Y')

同样的结果,虽然这次我没有收到警告消息。

第一条消息是正确的:

UPDATE table SET date = STR_TO_DATE(date, '%m/%d/%Y')
但如果日期无效,且不是%m/%d/%Y格式,则返回NULL

尝试执行,然后显示警告。它告诉你什么是错的:

UPDATE table SET date = STR_TO_DATE(date, '%m/%d/%Y');
SHOW WARNINGS;

可能某些日期的格式不是%m/%d/%Y,可能是%d/%m/%Y

,如果您的列确实包含这些值,则该格式应该有效。你说过第二次@date变量为null时没有收到警告。。。您第一次收到了什么警告?为了使这是一个有价值的更改,您需要将列的定义更改为datetime—否则您将尝试将datetime值插入VARCHAR列。这是可行的,但它仍然被视为字符串,不能用于日期函数Shi Michael,在另一次尝试中,我没有在这里发布,我确实尝试创建一个带有日期值的新列,并在其中插入我的值,但每个值仍然为NULL。我收到的警告是:1411函数str_to_date的datetime值不正确:“NULL”。它在引号中的字面意思是“NULL”,这让我怀疑实际的表内容。如果它传递的是NULL,则它将不带引号。您是在应用程序代码中运行,还是直接在MySQL客户端中运行?您可以发布一个表格行示例,从表格限制10中选择日期吗?我正在一个客户端MySQL工作台中运行。运行您建议的查询后,这是我的结果,我从客户端复制并粘贴了该结果。订单日期8/22/2011 8/10/2010 5/12/2012 1/17/2011 7/17/2015 10/19/2008 9/29/2008 8/4/2010 5/11/2007 12/4/2014当我创建一个只有三个条目的虚拟日期文件并重复该过程时,它成功了。我的大日期文件一定是出了什么问题,导致了错误。所有记录中都有空值吗?您可以检查该文件,看看是否有一些错误的值。还可以尝试在更新后调用SHOW WARNINGS.huh。我只是再次尝试了完全相同的代码,它成功了。真奇怪。无论如何,谢谢你的帮助。