我们正在 C# 4 中开发一个使用 SQL Server 2008 R2 作为后端的应用程序。在极少数情况下,SQL Server Compact 4 也用于断开连接的客户端。我们想知道将日期/时间数据存储到这些数据库中的最佳方式是什么,以便:
- 包含不同时间偏移量(来自不同时区)的数据可以很好地共存。这意味着被排序和比较。
- SQL Server 2008 R2 和 SQL Server Compact 4 中的数据可以无缝来回传输;这是一个不应该影响所选设计的次要要求。
我们主要关心的是为每个记录的事件保留本地时间,但不会失去比较和排序从不同时区生成的事件的能力,因此具有不同的时间偏移量。
我们已经考虑了datetimeoffset
数据类型,因为它存储了时间偏移,并且因为它很好地映射到了 .NET 的DateTimeOffset
. 但是,SQL Server Compact 4 不支持它。另一种方法是从数据库中删除偏移信息并使用简单的datetime
数据类型,以便数据库中的每条数据都被规范化,并且 Compact 的问题更少。然而,这引入了一个问题,即在用户看到数据之前,需要在检索时以某种方式重建偏移信息。
所以我的问题是,是否有关于如何在 SQL Server 中存储日期/时间值的最佳实践或指南,考虑到我们需要处理不同的时区,并使 2008 R2 和 Compact 4 之间的互操作性变得简单尽可能?
谢谢你。