我最近安装了MySQL 5.7。使用日期栏发生了一些奇怪的事情。
如果我在WHERE部分中使用该字段执行SELECT查询,我有一个结果集,但是当我使用相同的WHERE条件来更新行时,我得到 无效的日期格式 错误消息。
这是 SELECT 句子:
JSON
这句话返回2行结果集,这没关系。
现在,这是更新句子:
SELECT *
FROM
FDpoCargTran
WHERE FDpoCargTran.Banco = '001'
AND (FDpoCargTran.Conciliacion = '' OR FDpoCargTran.Conciliacion IS NULL)
AND FDpoCargTran.Fecha = '2016-09-27'
我收到此错误消息:
UPDATE
FDpoCargTran
SET
Edo = 'C'
WHERE FDpoCargTran.Banco = '001'
AND (FDpoCargTran.Conciliacion = '' OR FDpoCargTran.Conciliacion IS NULL)
AND FDpoCargTran.Fecha = '2016-09-27'
AND Deposito = 1041
Conciliacion 列定义为:
Data truncation: Incorrect date value: '' for column 'Conciliacion'
如果我删除 Conciliacion =' 条件,一切正常。
为什么空字符串无法用于评估UPDATE语句中的列而不是SELECT?
请一个想法!!!
答案 0 :(得分:1)
基本上,对于
true
数据类型,您无法存储像White这样的内容 空格或''字符串。您需要使列接受NULL 值并在其中插入实际的NULL。这不是MySQL 5.7中的问题,它在数据库中设置date
的方式。
更新是一个DML语句,当你真的想要写一些东西到表中,或检查一个条件时,MySQL无法理解日期列类型是什么。
所以,你不能拥有'',而是可以设置date
。这就是MySQL如何检查条件并进行适当的更改!!
我建议,将其更改为NULL。