MySQL 5.7日期字段故障
我最近安装了MySQL 5.7。日期列出现了一些奇怪的情况 如果我在WHERE部分中使用该字段执行SELECT查询,我会得到一个结果集,但是当我使用相同的WHERE条件更新一行时,我会得到一条无效日期格式的错误消息 以下是选择的句子:MySQL 5.7日期字段故障,mysql,sql,date,mysql-5.7,Mysql,Sql,Date,Mysql 5.7,我最近安装了MySQL 5.7。日期列出现了一些奇怪的情况 如果我在WHERE部分中使用该字段执行SELECT查询,我会得到一个结果集,但是当我使用相同的WHERE条件更新一行时,我会得到一条无效日期格式的错误消息 以下是选择的句子: SELECT * FROM FDpoCargTran WHERE FDpoCargTran.Banco = '001' AND (FDpoCargTran.Conciliacion = '' OR FDpoCargTran.Conciliacion
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
这个句子返回两行结果集,没关系
现在,这里是更新的句子:
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
我得到这个错误信息:
Data truncation: Incorrect date value: '' for column 'Conciliacion'
调解列的定义如下:
`Conciliacion` date DEFAULT NULL,
如果我删除调解='条件,一切都会正常工作
为什么空字符串对UPDATE语句中的列而不是SELECT语句中的列无效
请,一个想法
基本上,对于date
datatype,您不能存储类似白色的内容
空格或“”字符串。您需要使列接受NULL
值,并在其中插入实际的NULL。这在MySQL 5.7中不是问题,它是如何在数据库中设置日期的
Update是一个DML语句,当您实际想要在表中写入内容或检查条件时,MySQL无法理解日期列类型的“”是什么
因此,您不能设置“”,而是可以设置NULL
set。这就是MySQL检查条件并进行适当更改的方式
我建议,将其更改为NULL
您的表格中是否有
Conciliacion=''
的数据?我看到定义为日期默认值null
的列,这意味着您可以拥有有效的日期或null,而不是空字符串。不,只有,日期值或null。谢谢您的回答,我将按照您编写的步骤进行操作。该表中只有日期值或null,没有空字符串。;-)谢谢&欢迎:)