为了给出一些上下文,我在大多数日期时间列中使用带有DATETIMEOFFSET(2)的sql 2008 R2.我正在考虑将时间戳的更新放入存储过程,以便它们不需要通过网络传递.这将在系统增长时节省带宽,这是一件好事……并且可用于验证数据是否在共享数据上发生变化(首次获胜).不利的一面是,提交事务的第一个可能不是那个在他们的应用程序实例上遇到较慢响应时间而获胜的人.
在此上下文中处理UTC时间数据的理想或推荐方法是什么?
>使用SYSUTCDATETIME()或在…中将其设置在SPROC中
>使用DateTimeOffset.Now或DateTime.UtcNow在应用程序中设置它
如果上面有两个,是否建议在表示层触发它并将其通过服务传递给域层,或者只是在它到达服务后端的域时设置它?
正如你所看到的,这里有很多选择,我倾向于数据库…但在继续构建这个东西之前,我会感激任何建议或警告的话.
旁注:我也在跟踪地理空间信息……但这不是一个硬实时系统.用户实时绰绰有余.
更新:我将在应用程序中使用DateTimeOffset.我的研究让我发现你“可以通过首先在每个上调用ToUniversalTime来可靠地比较任何拖曳日期时间.如果(并且仅当)其中一个具有”未指定“的DatTimeKind,则该策略失败.这种失败的可能性是另一个赞成DateTimeOffset的原因“ – C#4.0在果壳中,O’Riely书籍.
解决方法
(另外如果你正在存储UTC时间,你真的需要DATETIMEOFFSET吗?如果是这样,那么你仍然需要一些方法让程序知道这个信息来自哪个时区.如果没有,那么你应该只使用SMALLDATETIME / DATETIME / DATETIME2取决于所需的准确度.)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。