MySQL“空”日期(0001-01-01)是不是有值
Posted
技术标签:
【中文标题】MySQL“空”日期(0001-01-01)是不是有值【英文标题】:Is there a value for MySQL "null" date (0001-01-01)MySQL“空”日期(0001-01-01)是否有值 【发布时间】:2021-04-23 18:36:51 【问题描述】:在我的数据库中,有一个不可为空的日期列。当我没有提供日期时,该值显示为 0001-01-01。
但是,在客户端中,我需要知道该列何时为空,为此我使用了一个愚蠢的条件:
if (Record.Year == 1)
///the column is empty, show "N/A" for date
有没有比这更优雅的方式(DB列不能改)?
【问题讨论】:
使其可以为空。不要玩游戏,否则你会遇到问题。如果它“不能”被改变,那么无论你选择什么“神奇”的日期,你都会陷入一个痛苦的世界。您也许可以使用0000-00-00
,但它很笨,看起来像一个数据错误。这就是你最终得到 2000 年历史的人和带有两千年后利息的发票的方式。
编写一个视图,将不可靠的数据映射到NULL
(应该是这样)。这样你存储它是错误的,但检索它正确。
这是可空列的确切用例。修复数据库设计并将任何无意义的日期转换为正确的NULL
值。
我不明白你是否想存储空值。然后你可以决定如何处理它们。
【参考方案1】:
通过选择定义 NOT NULL
列,您告诉数据库,那里总是需要一个(可能是有效的)日期。如果这不符合您的业务逻辑,那么您只有两种可能:
ALTER TABLE tablename MODIFY COLUMN ...
)
忍受这场糟糕的比赛:这将包括像“魔法值”这样的拐杖,而且很可能会导致更多的麻烦。
【讨论】:
以上是关于MySQL“空”日期(0001-01-01)是不是有值的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 pandas.to_datetime() 函数将 0001-01-01 转换为 2001-01-01
Mysql时间类型为NULL,读出来是0001-01-01 08:05:43,想给前端显示为空字符或其他
Mysql时间类型为NULL,读出来是0001-01-01 08:05:43,想给前端显示为空字符或其他