【发布时间】:2011-09-08 00:27:21
【问题描述】:
well known 在数据库中,您应该将日期存储在通用时间坐标中。
我正在寻找一种方法来了解开发人员在写入数据库时何时滥用 DateTime.Now。
我们使用的是 Sql Server 2008,带有 EF4 或 nHibernate 3.0。
当日期时间的值包含在低层的时区信息时,是否可以截取它的值,比如在 Sql Server 中,或者在 NH/EF 中?
【问题讨论】:
-
您的“众所周知”的事实本身就有点主观。虽然通用时间可能是一个很好的默认值,但有时本地时间更方便也更合适。
-
不,以 UTC 存储时间并不总是正确的。例如,公共汽车或火车时刻表在 UTC 中没有意义,但应该以本地时间存储。这同样适用于约会。
-
有关 UTC 与本地时间的深入讨论,另请参阅 stackoverflow.com/questions/2580478/…。请记住,datetime 不包含实际的时区信息,而仅包含
Local, Utc或Unspecified的标志。 -
@mnemosyn 当公共汽车或火车穿越时区时,什么是“当地时间”?
-
@RedFilter:我提到的线程讨论了一些问题。当然,由于 DST,当地时间并不总是可逆的:可能会出现歧义。尽管如此,设置为晚上 7 点的约会会在晚上 7 点重新生效,即使它转移了一周(例如,跨越 DST 边界),并且正确应用这些规则可能非常棘手 - 因此,在极少数情况下,当地时间让事情变得更容易。
标签: .net sql-server nhibernate entity-framework