当前位置: 首页 > 面试题库 >

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

尉迟正奇
2023-03-14
问题内容

我有一个“ 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或将其完全排除在更新查询之外,以避免此错误?我对吗?谢谢!!!


问题答案:

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



 类似资料:
  • 更复杂的是,来自许多不同时区的协作者将需要访问存储在数据库中的日期-时间值。我希望他们总是出来作为坦桑尼亚的时间,而不是在当地的时间,各种合作者在。 我不太愿意设定会话时间,因为我知道如果有人忘记设定会话时间,而把时间算错了,就会有问题。我无权更改服务器的任何内容。 我读过:夏令时和时区最佳实践和MySQL日期时间字段和夏令时--我如何引用“额外”小时?并在PHP/MySQL中将datetime存

  • 问题内容: 我不敢相信我无法做到这一点,但我希望能够将当前日期和时间从php存储到mysql表中。 表中的列是类型datetime。我已经试过了 但是我的时间戳记为0000-00-00 00:00:00 这一定很容易做到,但我无法使其正常运行!我想使用来自php的时间戳,而不是使用mysql now()函数 问题答案: 不要将其另存为Unix Timestamp(输出),而是另存为DATETIME

  • 问题内容: 这星期我们在办公室进行了一场健康的辩论。我们正在创建一个Db来存储代理信息,在大多数情况下,除了应该如何存储IP之外,我们还制定了模式。一个阵营想要使用4个smallint,每个八位位组一个,另一个希望使用1个大int INET_ATON。 这些表将非常庞大,因此性能至关重要。我处于中间位置,因为我通常在世界中使用MS SQL和4个小整数。我对这种类型的IP存储量没有足够的经验。 我们

  • 问题内容: 我有一个具有数据类型joda.money属性的类。如何将这个属性映射到mysql中。 我的课是: @Table(name =“ products”)公共类Product(){@Column(name =“ name”)字符串名称;@Column(name =“ money”)金钱金钱;} 我正在使用Spring Hibernate 谁能说出如何将此模型存储到mysql中? 问题答案:

  • 问题内容: 如何在免费版本的MySQL中存储Unicode? 在SQL Server中似乎没有类型。MySQL不支持Unicode吗?我尝试使用,但是那也不起作用。 问题答案: 您需要为表选择一个 字符集。然后,文本和备注字段将自动存储在UTF-8中。MySQL 6中提供了对UTF-16的支持。

  • 问题内容: 在MySQL中,性能和存储(空间)明智地归零是什么? 例如: TINYINT:1字节TINYINT w / NULL 1字节+以某种方式存储NULL? 问题答案: 这取决于您使用的存储引擎。 在MyISAM格式中,每个行标题都包含一个位域,每个列的每个位都具有一位以对NULL状态进行编码。NULL列仍会占用空间,因此NULL不会减少存储量。参见https://dev.mysql.com