NULL
使用默认日期“0000-00-00 00:00:00”或在 MySQL 数据库上是更好的做法吗?
出于计算的原因,我已阅读最好的使用默认日期“0000-00-00 00:00:00”
即 >
比日期小于日期。
最好按时存放00:00
或NULL
不知道时间。
NULL
使用默认日期“0000-00-00 00:00:00”或在 MySQL 数据库上是更好的做法吗?
出于计算的原因,我已阅读最好的使用默认日期“0000-00-00 00:00:00”
即 >
比日期小于日期。
最好按时存放00:00
或NULL
不知道时间。
MySQL 5.7 默认不允许0000-00-00 00:00:00
作为默认值,除非您设置sql_mode = ''
. 似乎 MySQL 希望您将其NULL
用作默认值。
您应该使用NULL
因为0000-00-00 00:00:00
不是有效日期。如果您使用诸如moment.js或Carbon之类的库来管理日期,它们都知道如何处理 NULL
日期。
MySQL 配置应始终设置为:
SET sql_mode = 'NO_ZERO_DATE';
除非您必须处理旧数据库。
也就是说,根据MySQL 文档:
MySQL 允许您将“0000-00-00”的“零”值存储为“虚拟日期”。在某些情况下,这比使用 NULL 值更方便,并且使用更少的数据和索引空间。要禁止“0000-00-00”,请启用 NO_ZERO_DATE 模式。
如果您在 Windows 上:
通过连接器/ODBC 使用的“零”日期或时间值会自动转换为 NULL,因为 ODBC 无法处理这些值。
要考虑的另一点是:零日期的真正含义是什么?
除非您的答案是第一个并且您需要与空日期进行比较,否则使用NULL
值总是不那么令人困惑。
默认值应为 NOT NULL 以支持所有日期时间操作。我还使用“0000-00-00 00:00:00”作为默认值。