在 SQL Server 中将日期时间存储为字符串的最佳实践

Joe*_*Min 1 c# sql-server datetime

假设我必须在我的 Web 应用程序中存储一个DateTimestringSQL Server 中一样的值。此 Web 应用程序将部署到 LB 后面的多台服务器上,并共享同一个数据库服务器。

这是一个遗留项目,显然这些人开发它只是ToString()DateTime实例上调用,这将根据机器的文化设置格式化日期时间;并且在检索日期时间时,一个简单的方法DateTime.Parse()会隐式地使用相同的文化设置正确解析它。

但是我不认为这是一个好方法,因为这会在数据和机器的文化设置之间产生依赖性,这意味着如果多个开发人员具有不同的时区设置,他们将以DateTime不同的格式插入,这会在稍后出现错误这些值被解析回DateTime.

我认为更好的方法是定义格式的统一标准DateTime(例如 dd/mm/yyyy),以便数据可以跨不同机器工作。但是,我想知道这种方法是否有任何缺点或意外问题,非常感谢您的洞察力!

Gor*_*off 8

将日期/时间存储为字符串的最佳格式是 ISO 8601 标准格式,即 YYYY-MM-DD 或 YYYYMMDD(我更喜欢带连字符的版本,因为我是人)。

这种格式是标准的,几乎完全没有歧义(YYYYDDMM 作为一种格式几乎是未知的)。它还可以正确排序并可用于between-type 比较。

  • “因为我是人”……所有相反的证据。 (5认同)