【问题标题】: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 值。
  • 我不明白你是否想存储空值。然后你可以决定如何处理它们。

标签: c# mysql datetime


【解决方案1】:

通过选择定义 NOT NULL 列,您告诉数据库,那里总是需要一个(可能是有效的)日期。如果这不符合您的业务逻辑,那么您只有两种可能:

  • 匹配业务逻辑和数据库模型 (ALTER TABLE tablename MODIFY COLUMN ...)
  • 忍受这场糟糕的比赛:这包括像“魔法值”这样的拐杖,而且很可能会导致更多的麻烦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-06
    • 2015-12-31
    • 2011-10-07
    • 1970-01-01
    • 2021-01-28
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多