我最近安装了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
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中计算?
拜托,一个主意!
发布于 2016-09-28 03:41:40
基本上,对于
date数据类型,您不能存储类似空格或“”字符串的内容。您需要使该列接受空值并将实际空值插入其中。这在MySQL 5.7中不是问题,而是如何在数据库中设置date。
Update是一条DML语句,当您实际想要向表中写入某项内容或检查某个条件时,MySQL无法理解date列类型的“”是什么。
因此,您不能拥有“”,而是可以设置NULL。这就是MySQL如何检查条件并做出适当的更改!!
我建议把它改为空。
https://stackoverflow.com/questions/39737396
复制相似问题