我有一个“ bill_date”字段,在结算之前要一直为空白(NULL),此时将输入日期。
我看到MySQL不喜欢datetime字段中的NULL值。你们中有没有一个简单的方法来解决这个问题,还是我被迫将最小日期用作“等效的NULL”,然后检查该日期?
谢谢。
编辑添加:
好的,我确实看到MySQL将接受NULL值,但是如果我使用PHP更新记录,它将不会接受它作为数据库更新。
变量名称为,$bill_date但是如果我更新记录而不发送值至,它将不会将变量保留为NULL- $bill_date我收到此错误:
$bill_date
Database query failed: Incorrect datetime value: '' for column 'bill_date' at row 1
我假设我需要实际发送单词NULL或将其完全排除在更新查询之外,以避免此错误?我对吗?谢谢!!!
MySQL 确实 允许NULL使用datetime字段值。我只是测试了一下:
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。
''
null
insert
编辑#2:您正在使用PDO吗?如果是这样,则在绑定空参数时,请确保[PDO::PARAM_NULL][1]在绑定a时使用类型null。有关如何使用PDO 正确插入的信息,请参见此stackoverflow问题的答案null。
[PDO::PARAM_NULL][1]