C# 在SQL Server中将日期时间存储为字符串的最佳实践
假设我必须在我的web应用程序中的SQL Server中将C# 在SQL Server中将日期时间存储为字符串的最佳实践,c#,sql-server,datetime,C#,Sql Server,Datetime,假设我必须在我的web应用程序中的SQL Server中将DateTime值存储为string。此web应用程序将部署到LB后面的多个服务器,并共享同一个DB服务器 这是一个遗留项目,显然是由开发人员在DateTime实例上简单地称之为ToString(),这将根据机器的区域设置格式化DateTime;在检索日期时间时,一个简单的datetime.Parse()将使用相同的区域性设置隐式地正确解析它 但是我认为这不是一个好方法,因为这会在数据和机器的区域性设置之间产生依赖关系,这意味着如果多个开
DateTime
值存储为string
。此web应用程序将部署到LB后面的多个服务器,并共享同一个DB服务器
这是一个遗留项目,显然是由开发人员在DateTime
实例上简单地称之为ToString()
,这将根据机器的区域设置格式化DateTime;在检索日期时间时,一个简单的datetime.Parse()
将使用相同的区域性设置隐式地正确解析它
但是我认为这不是一个好方法,因为这会在数据和机器的区域性设置之间产生依赖关系,这意味着如果多个开发者具有不同的时区设置,他们将以不同的格式插入DateTime
,当这些值被解析回DateTime
时,这将出错
我认为更好的方法是定义一个统一的标准,格式为
日期时间
(例如dd/mm/yyyy),以便数据可以在不同的机器上工作。然而,我想知道这种方法是否有任何缺点或意外的问题,并将非常感谢您的洞察力 将日期/时间存储为字符串的最佳格式是ISO 8601标准格式,YYYY-MM-DD或YYYYMMDD(我更喜欢带有连字符的版本,因为我是人)
此格式是标准格式,几乎完全没有歧义(YYYYDDMM作为一种格式几乎是未知的)。它还可以正确排序,并可用于
之间的类型比较。将日期/时间存储为字符串的最佳格式是ISO 8601标准格式,YYYY-MM-DD或YYYYMMDD(我更喜欢带有连字符的版本,因为我是人)
此格式是标准格式,几乎完全没有歧义(YYYYDDMM作为一种格式几乎是未知的)。它还可以正确排序,并可用于之间的类型比较。谢谢戈登,这很有意义!!:)“因为我是一个人”。。。所有相反的证据。@johncapelletti。哈哈,但你不认识我。谢谢戈登,这很有道理!!:)“因为我是一个人”。。。所有相反的证据。@johncapelletti。哈哈,但你不认识我。我会将日期时间存储为DateTimeOffset
,然后在表中创建一个计算列,自动返回正确的字符串表示形式。使用DateTimeOffset
保留时区信息,以防您的开发人员位于不同的区域。我会将日期时间存储为DateTimeOffset
,然后在表中创建一个计算列,自动返回正确的字符串表示形式。使用DateTimeOffset
保留时区信息,以防您的开发者位于不同的区域。