这是一个明智的观点。
空日期不是零日期。它们可能看起来一样,但它们不是。在 mysql 中,空日期值为空。零日期值是空字符串 ('') 和 '0000-00-00 00:00:00'
在空日期“...其中 mydate = ''“ 将失败。
在空/零日期“...其中 mydate 为 null“将失败。
但现在让我们变得时髦。在mysql日期中,空/零日期是严格相同的。
通过示例
select if(myDate is null, 'null', myDate) as mydate from myTable where myDate = '';
select if(myDate is null, 'null', myDate) as mydate from myTable where myDate = '0000-00-00 00:00:00'
将两者都输出:'0000-00-00 00:00:00'。如果将 myDate 更新为“”或“0000-00-00 00:00:00”,则两种选择仍将相同。
在 php 中,标准 mysql 连接器将遵循 mysql 空日期类型,并且是真正的 null($var === null,is_null($var))。空日期将始终表示为“0000-00-00 00:00:00”。
我强烈建议只使用空日期,或者如果可以的话,只使用空日期。(一些系统将使用“virual”零日期,这是有效的公历日期,如1970-01-01(linux)或0001-01-01(预言机)。
空日期在 php/mysql 中更容易。您没有要处理的“where field is null”。但是,您必须“手动”将'0000-00-00 00:00:00'日期转换为''以显示空字段。(要存储或搜索,您没有特殊情况要处理零日期,这很好)。
空日期需要更好的照顾。当您插入或更新时必须小心,以免在null周围添加引号,否则将插入零日期而不是null,这会导致您的标准数据严重破坏。在搜索表单中,您将需要处理诸如“并且 mydate 不为 null”等情况。
空日期通常是更多的工作。但它们比查询的零日期快得多。