2016-12-30 37 views
0

它的奇怪,但我不明白究竟发生了什么。我只是试图通过计算两个日期之间的差异来更新我的列值。我有两列有日期column_45column_14两列具有日期格式4/8/20114/8/2009现在我正在计算两个日期之间的差异与DATEDIFF()函数和更正我使用STR_TO_DATE()函数的日期格式。一切工作正常,当我从phpmyadmin运行的查询,当相同的查询我从我的laravel项目运行其示值误差:MySQL:str_to_date函数显示不正确的日期时间值

Incorrect datetime value: 'No' for function str_to_date (SQL: UPDATE define_testing set column_1637 = DATEDIFF(STR_TO_DATE(column_45 ,"%m/%d/%Y"),STR_TO_DATE(column_14 ,"%m/%d/%Y")) where id > 1)

我知道有一些字符串值,在我的专栏,但它应该显示相同的phpmyadmin也可以在phpmyadmin中正常工作。

我的表:

enter image description here

更改为MyQuery: enter image description here

精确MySQL查询:

UPDATE `define_testing` set `column_1637` = DATEDIFF(STR_TO_DATE(`column_45`,"%m/%d/%Y"),STR_TO_DATE(`column_14`,"%m/%d/%Y")) where id > 1 

任何一个可以告诉我,什么是错的?

+0

你真的有你的列这样命名?这将是一场噩梦。 – Devon

+0

这是临时表..列名将在我的情况下为动态... –

+0

正如您在错误消息中看到的那样,其中一个日期值导致了问题。你能手动输出你的查询并将其添加到问题中吗?确切的查询,得到执行将是有益的。 – Andy

回答

0

尝试DB::statementraw queries返回布尔值。

DB::statement('UPDATE '. $table .' set column_'. $colCount .' = DATEDIFF(STR_TO_DATE('.$value->col_one.',"%m/%d/%Y"),STR_TO_DATE('.$value->col_two.',"%m/%d/%Y")) where id > 1'); 
相关问题