如何设置NULL为datetime与0000-00-00 00:00:00值?

Bor*_*mbo 9 mysql sql datetime sql-update

我需要在我的数据库上更改一些值.

我忘了设置为nullable到表,它默认设置为0000-00-00 00:00:00.

现在我需要转换该值NULL.

字段类型是Datetime.

我该怎么做?

我尝试了典型Update table set field = NULL WHERE field = '0000-00-00 00:00:00';但它不起作用.

Mur*_*nik 6

您需要首先使列可为空:

ALTER TABLE mytable MODIFY COLUMN field DATETIME NULL;
Run Code Online (Sandbox Code Playgroud)

然后更新值:

UPDATE mytable SET field = NULL WHERE field = '0000-00-00 00:00:00';
Run Code Online (Sandbox Code Playgroud)

  • 不会对MySQL 5.7起作用,因为它很严格 (3认同)

Alt*_*PHP 5

从MySQL 5.7开始,SQL模式NO_ZERO_DATE使得此更新无法进行,除非您首先禁用此限制(仅在事务期间)。

SET sql_mode=(SELECT REPLACE(@@sql_mode,"NO_ZERO_DATE", ""));
UPDATE mytable SET field = NULL WHERE field = '0000-00-00 00:00:00';
Run Code Online (Sandbox Code Playgroud)