【问题标题】:Should I store Employee StartDate as DT_Date, DT_DBDate or DateTime2我应该将员工 StartDate 存储为 DT_Date、DT_DBDate 还是 DateTime2
【发布时间】:2017-08-30 22:24:58
【问题描述】:

我正在构建一个新的员工跟踪应用程序。我正在使用 SSIS 将员工数据从 Excel 电子表格导入 MSSQL 2016 数据库。我应该将员工 StartDate 信息转换并保存为“DT_Date”、“DT_DBDate”还是“DateTime2”?

在我看来,我应该将它保存为 DT_DBDate 类型,因为一天中一个人加入的时间与我的应用程序无关。然而,我担心,我可能会限制自己将来能够做一些事情,例如日期时间算术,并且无法在任何地方找到关于何时使用不同日期类型的文章。我希望得到任何关于我应该选择什么类型以及为什么选择的建议。

【问题讨论】:

  • 如果您不需要时间,DT_DBDate 听起来是正确的选择。
  • 我认为最安全的选择是日期时间。
  • 知道你的投票是什么,不幸的是对我没有帮助。我需要知道为什么 - 即会发生什么会降低约会的安全性?

标签: sql-server excel ssis


【解决方案1】:

根据我处理 Excel 源数据的经验,当涉及到日期时间/日期字段时,将它们视为字符串并使用派生列转换将数据修改为您需要的数据类型。你可能会遇到奇怪的问题。如果您的结束列是日期,则为 DT_DBDATE,或者如果您的结束列是日期时间,则为 DT_DBDATETIME。

【讨论】:

  • 感谢您的回复。我主要关心的不是如何转换数据,而是在 MSSQL Server 2016 数据库中存储 StartDate 的最佳最终数据类型。我应该将它存储为日期还是日期时间2?我永远不需要知道员工在一天中的什么时间开始工作,但我担心如果我选择日期字段可能会遇到未来的限制。感谢您的想法。
  • 正如我所提到的,它基于您的要求。如果您想记录时间组件,那么在 datetime 和 datetime2 之间,请使用 datetime2,因为它在存储和可以应用的功能方面为您提供更大的范围和更大的灵活性。 SQL Server 2016 版本没有对日期时间添加任何特定的改进。请参阅这篇文章 - red-gate.com/simple-talk/sql/t-sql-programming/…,它很好地了解了要遵循的最佳实践以及有关日期/日期时间的常见缺陷。
  • 谢谢 - 我将使用日期格式 - 您的 cmets 和您链接到的文章非常有帮助
猜你喜欢
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
相关资源
最近更新 更多