小编典典

如何在MySQL中的datetime字段中存储NULL值?

mysql

我有一个“ bill_date”字段,在结算之前要一直为空白(NULL),此时将输入日期。

我看到MySQL不喜欢datetime字段中的NULL值。你们中有没有一个简单的方法来解决这个问题,还是我被迫将最小日期用作“等效的NULL”,然后检查该日期?

谢谢。

编辑添加:

好的,我确实看到MySQL将接受NULL值,但是如果我使用PHP更新记录,它将不会接受它作为数据库更新。

变量名称为,$bill_date但是如果我更新记录而不发送值至,它将不会将变量保留为NULL- $bill_date我收到此错误:

Database query failed: Incorrect datetime value: '' for column 'bill_date' at row 1

我假设我需要实际发送单词NULL或将其完全排除在更新查询之外,以避免此错误?我对吗?谢谢!!!


阅读 2495

收藏
2020-05-17

共1个答案

小编典典

MySQL 确实 允许NULL使用datetime字段值。我只是测试了一下:

mysql> create table datetimetest (testcolumn datetime null default null);
Query OK, 0 rows affected (0.10 sec)

mysql> insert into datetimetest (testcolumn) values (null);
Query OK, 1 row affected (0.00 sec)

mysql> select * from datetimetest;
+------------+
| testcolumn |
+------------+
| NULL       | 
+------------+
1 row in set (0.00 sec)

我正在使用此版本:

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.45    | 
+-----------+
1 row in set (0.03 sec)

编辑#1:我在您的编辑中看到,您在PHP中收到的错误消息表示您正在传递一个空字符串(即''),而不是null。空字符串不同于null且不是有效值datetime,这就是为什么您收到该错误消息的原因。null如果这是您的意思,则必须传递特殊的sql关键字。另外,请勿在单词周围加上任何引号null。有关insert如何插入的示例,请参见上面的声明null

编辑#2:您正在使用PDO吗?如果是这样,则在绑定空参数时,请确保[PDO::PARAM_NULL][1]在绑定a时使用类型null。有关如何使用PDO
正确插入的信息,请参见此stackoverflow问题答案null

2020-05-17