【问题标题】:What to do with 'NA' in a database table's datetime column?如何处理数据库表的日期时间列中的“NA”?
【发布时间】:2018-11-28 20:18:22
【问题描述】:

有人知道在 SQL Server 数据库的日期时间列中处理“NA”值的最佳方法吗?我正在将 nvarchars 转换为 datetime 并且因为 'NA' 不是同一个 NULL,所以我不能将它转换为一个。该列是房产空置的日期,“NA”表示它不是空置的,但列中也有 NULL 值,这意味着它不知道该房产是否空置。什么是不丢失信息的最佳方法? (没有派人去检查属性) 谢谢

【问题讨论】:

  • 听起来您应该用NULL 替换该值,并在另一列中解释该值的原因或来源。
  • 为了扩展 Gordon 的建议,我将添加一个名为 IsDateTimeColumnSourceNull 的列并将其设为位值。
  • 感谢 Gordon 和 J,仔细想想,这似乎是显而易见的。最好的解决方案通常是
  • 或者您可以同意业务将它们设置为 '01/01/1900' 或 '09/09/9999' 。业务需要决定规则。

标签: sql database ssis


【解决方案1】:

另一种解决方案是将值设置为数据类型允许的最大未来值。未来的任何日期都应该表明该物业目前没有空置,对吧?

【讨论】:

  • 我考虑过提及该解决方案(即 12-31-9999),但如果查询使用带有 BETWEEN 子句的日期查找(带有结束日期为 12-31-9999),则可以返回这些 NA 列。此外,从功能的角度来看,任何实际日期都成为合法日期,而 NA 不是日期。恕我直言,我不会推荐这个解决方案 - 我认为第二个指标列会是一个更清洁、更安全的解决方案。
  • @JWeezy 这是否是一个可行的解决方案绝对取决于数据的使用方式。前端必须围绕这种用法进行编程才能正常工作。
猜你喜欢
  • 2020-06-13
  • 2013-09-01
  • 2020-03-25
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
相关资源
最近更新 更多