Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql中的updatedatetime列_Mysql_Datetime - Fatal编程技术网

mysql中的updatedatetime列

mysql中的updatedatetime列,mysql,datetime,Mysql,Datetime,由于某些原因,此命令不起作用,无法找出可能的错误。我正在使用mysql,下面是命令: update users set regdate = '2017-06-30 15:08:24' where regdate = '0000-00-00 00:00:00' 这是错误信息 Incorrect datetime value: '0000-00-00 00:00:00' for column 'regdate' at row 1 regdate字段是datetime类型。 请帮助不要存储此类日期

由于某些原因,此命令不起作用,无法找出可能的错误。我正在使用mysql,下面是命令:

update users set regdate = '2017-06-30 15:08:24' where regdate = '0000-00-00 00:00:00'
这是错误信息

Incorrect datetime value: '0000-00-00 00:00:00' for column 'regdate' at row 1
regdate字段是datetime类型。
请帮助

不要存储此类日期。在数据库中有这样的日期(浪费空间)对您有什么意义

而是将列设置为空,并存储
NULL
,而不是
'0000-00-00 00:00:00'

使用更改列定义

ALTER TABLE your_tablename MODIFY COLUMN your_columnname datetime NULL;
您在那里设置的sql_模式是一个好主意,它们只是防止数据库中出现垃圾。我不会改变他们

唯一的“消极”方面是,您必须稍微调整一下查询。
NULL
“value”根本不是一个值,而是字面上的“no value”(这就是为什么要节省一些空间)。因此,当你想找到这样的日期,你不能这样做

SELECT * FROM your_table WHERE datetime_column = NULL;
必须使用特殊的比较运算符,如

SELECT * FROM your_table WHERE datetime_column IS NULL;

但这不是一个真正的问题。另一种改变sql_模式的方法是“更舒适,但有点危险”。

不要存储这样的日期。在数据库中有这样的日期(浪费空间)对您有什么意义

而是将列设置为空,并存储
NULL
,而不是
'0000-00-00 00:00:00'

使用更改列定义

ALTER TABLE your_tablename MODIFY COLUMN your_columnname datetime NULL;
您在那里设置的sql_模式是一个好主意,它们只是防止数据库中出现垃圾。我不会改变他们

唯一的“消极”方面是,您必须稍微调整一下查询。
NULL
“value”根本不是一个值,而是字面上的“no value”(这就是为什么要节省一些空间)。因此,当你想找到这样的日期,你不能这样做

SELECT * FROM your_table WHERE datetime_column = NULL;
必须使用特殊的比较运算符,如

SELECT * FROM your_table WHERE datetime_column IS NULL;

但这不是一个真正的问题。另一种改变sql_模式的方法是“更舒适,但有点危险”。

感谢@lad2025提出了正确的问题。 要更改这些设置,您可以使用:

SET SQL_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_D‌​IVISION_BY_ZERO,NO_A‌​UTO_CREATE_USER,NO_E‌​NGINE_SUBSTITUTION';
更新之前输入该行,不应出现错误


如果我理解正确,这将不会永久设置SQL_模式。对于永久性更改,您必须修改.cnf文件

,感谢@lad2025提出了正确的问题。 要更改这些设置,您可以使用:

SET SQL_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_D‌​IVISION_BY_ZERO,NO_A‌​UTO_CREATE_USER,NO_E‌​NGINE_SUBSTITUTION';
更新之前输入该行,不应出现错误



如果我理解正确,这将不会永久设置SQL_模式。对于永久性更改,您必须修改.cnf文件

一天或一个月怎么可能为零?为什么不将这些日期存储为空值?请发布
选择@@GLOBAL.sql\u模式
日期中无零,无Z‌​ERO_日期
这是您的answer@RealCheeseLord没错,请随意发布答案:)一天或一个月怎么可能是零?为什么不将这些日期存储为空值?请发布
SELECT@@GLOBAL.sql\u mode
日期中无零,无Z‌​ERO_日期
这是您的answer@RealCheeseLord是的,完全正确,请随意发布一个答案:)新的修改不会看到该字段中的所有其他有效日期为空吗?抱歉,只是害怕:(不,它不会(删除不在那里,是一个输入错误)。它只允许空值。它不会更改数据。新的修改不会看到该字段中的所有其他有效日期为空吗?抱歉,只是害怕:(不,它不会(删除不在那里,是一个输入错误)。它只允许空值。它不会更改数据。伙计们,我现在有点困惑。我只想更新该字段。但有一些复杂的建议,我开始觉得我的脑袋在转(另一个答案将使您能够输入
NULL
值作为日期时间。这将使您能够输入
0000-00-00 00:00:00
@helennely我为我的答案添加了额外的解释。@realcheselord谢谢,我无法运行您的命令,下面是错误:变量'sql\u mode'不能设置为'error\u FOR D'的值‌​IVISION_BY_ZERO'hmmm,很奇怪,因为它已经在您的输出中设置好了,但请尝试从命令中删除该部分,并小心不要被零除……从文档中:
如果未启用此模式,被零除将插入NULL并不会产生警告,伙计们,我现在有点困惑。我只想更新该字段。。但是,有了一些复杂的建议,我开始觉得我的脑袋在转(另一个答案将使您能够输入
NULL
值作为日期时间。这将使您能够输入
0000-00-00 00:00:00
@helennely我为我的答案添加了额外的解释。@realcheselord谢谢,我无法运行您的命令,下面是错误:变量'sql\u mode'不能设置为'error\u FOR D'的值‌​IVISION_BY_ZERO'hmmm,奇怪,因为它已经在您的输出中设置好了,但请尝试从命令中删除该部分,并小心不要被零除……从文档中:
如果未启用此模式,被零除将插入空值,并且不会产生任何警告