12

NULL使用默认日期“0000-00-00 00:00:00”或在 MySQL 数据库上是更好的做法吗?

出于计算的原因,我已阅读最好的使用默认日期“0000-00-00 00:00:00”

>比日期小于日期。

最好按时存放00:00NULL不知道时间。

4

3 回答 3

4

MySQL 5.7 默认不允许0000-00-00 00:00:00作为默认值,除非您设置sql_mode = ''. 似乎 MySQL 希望您将其NULL用作默认值。

于 2018-09-17T21:08:46.440 回答
3

您应该使用NULL因为0000-00-00 00:00:00不是有效日期。如果您使用诸如moment.jsCarbon之类的库来管理日期,它们都知道如何处理 NULL日期。

MySQL 配置应始终设置为:

SET sql_mode = 'NO_ZERO_DATE';

除非您必须处理旧数据库。

也就是说,根据MySQL 文档

MySQL 允许您将“0000-00-00”的“零”值存储为“虚拟日期”。在某些情况下,这比使用 NULL 值更方便,并且使用更少的数据和索引空间。要禁止“0000-00-00”,请启用 NO_ZERO_DATE 模式。

如果您在 Windows 上:

通过连接器/ODBC 使用的“零”日期或时间值会自动转换为 NULL,因为 ODBC 无法处理这些值。

要考虑的另一点是:零日期的真正含义是什么?

  • '0000-00-00' < '2018-12-12' 吗?
  • “0000-00-00”是否意味着“未知”?
  • “0000-00-00”是否意味着“空”?

除非您的答案是第一个并且您需要与空日期进行比较,否则使用NULL值总是不那么令人困惑。

于 2019-03-26T13:47:09.417 回答
-4

默认值应为 NOT NULL 以支持所有日期时间操作。我还使用“0000-00-00 00:00:00”作为默认值。

于 2012-09-18T18:25:35.747 回答