在MySQL数据库上使用默认日期'0000-00-00 00:00:00'或NULL
更好吗?
出于计算原因,我已经阅读了最好使用默认日期'0000-00-00 00:00:00'
即 >
,而不是日期之前的日期。
如果时间不知道的话,还要准时存储00:00
或NULL
。
答案 0 :(得分:2)
MySQL 5.7默认情况下不允许0000-00-00 00:00:00
作为默认值,除非您设置sql_mode = ''
。看来MySQL希望您使用NULL
作为默认值。
答案 1 :(得分:0)
您应使用NULL
,因为0000-00-00 00:00:00
不是有效日期。如果您使用moment.js或Carbon之类的库来管理日期,则它们都知道如何处理NULL
日期。
MySQL配置应始终设置为:
SET sql_mode = 'NO_ZERO_DATE';
除非您必须处理旧数据库。
根据MySQL Documentation的说法:
MySQL允许您将“零”值“ 0000-00-00”存储为“虚拟日期”。在某些情况下,这比使用NULL值更方便,并且使用的数据和索引空间更少。要禁止使用“ 0000-00-00”,请启用NO_ZERO_DATE模式。
如果您使用的是Windows:
通过Connector / ODBC使用的“零”日期或时间值会自动转换为NULL,因为ODBC无法处理此类值。
要考虑的另一点是:零日期的真正含义是什么?
除非您的答案是第一个答案,而且您需要使用空日期进行比较,否则使用NULL
值总是不会造成混淆。
答案 2 :(得分:-2)
默认值应为NOT NULL,以支持所有日期时间操作。 我也使用“0000-00-00 00:00:00”作为默认值。