【发布时间】:2017-02-05 20:05:27
【问题描述】:
我最近安装了 MySQL 5.7 。日期列发生了一些奇怪的事情。
如果我使用 WHERE 部分中的该字段执行 SELECT 查询,我有一个结果集,但是当我使用相同的 WHERE 条件更新一行时,我得到一个 无效的日期格式 错误消息。
这是SELECT句:
SELECT *
FROM
FDpoCargTran
WHERE FDpoCargTran.Banco = '001'
AND (FDpoCargTran.Conciliacion = '' OR FDpoCargTran.Conciliacion IS NULL)
AND FDpoCargTran.Fecha = '2016-09-27'
这句话返回2行结果集,没关系。
现在,这是 UPDATE 语句:
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
我收到此错误消息:
Data truncation: Incorrect date value: '' for column 'Conciliacion'
Conciliacion 列定义为:
`Conciliacion` date DEFAULT NULL,
如果我删除 Conciliacion = '' 条件,一切正常。
为什么空字符串对于在 UPDATE 语句中而不是在 SELECT 语句中评估列无效?
请给个主意!!!
【问题讨论】:
-
你的表中有
Conciliacion = ''的数据吗?我看到定义为date default null的列,这意味着您可以有一个有效的日期或 null 并且 不是空字符串。 -
否,只有日期值或空值。