首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最好在MySQL中使用零日期“0000-00-00:00:00:00”或NULL?

问最好在MySQL中使用零日期“0000-00-00:00:00:00”或NULL?
EN

Stack Overflow用户
提问于 2012-09-18 18:07:29
回答 3查看 24.7K关注 0票数 12

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

由于计算的原因,我认为最好使用默认日期“0000-00-00:00:00”。

也就是说,>比日期短于日期。

如果不知道时间,最好按时存储00:00或NULL。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-18 18:25:35

为了支持所有的日期时间操作,默认值应该不是NULL。我还使用"0000-00-00 : 00:00:00“作为默认值。

票数 -4
EN

Stack Overflow用户

发布于 2018-09-17 21:08:46

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

票数 4
EN

Stack Overflow用户

发布于 2019-03-26 13:47:09

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

MySQL配置应始终设置为:

代码语言:javascript
复制
SET sql_mode = 'NO_ZERO_DATE';

除非你必须处理一个旧的数据库。

尽管如此,根据MySQL文档的说法:

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

如果您在Windows上:

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

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

  • “0000-00-00”<2018-12-12“吗?
  • “0000-00”的意思是“未知”吗?
  • “0000-00-00”的意思是“空”吗?

除非您的答案是第一个,并且需要使用空日期进行比较,否则使用NULL值总是不那么容易混淆。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12482560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档