我有一个数据结构,其中实体的时间存储为int
(当天的分钟数),以便进行快速比较。该实体还有一个返回TimeZone表的外键引用,该表包含.NET CLR ID名称及其标准时间/日光时间缩写。
由于此信息存储为时区不敏感 - 我想知道如何在LINQ to SQL中将其转换为UTC DateTime,以便与其他UTC时间进行比较。
要明确此转换必须在服务器端完成,以便我可以在SQL Server而不是客户端上执行过滤。这样做的原因是为了确保我们将DST考虑在支持它的时区。
我正在使用.NET 3.5 SP1和SQL Server 2008。
答案 0 :(得分:2)
理想情况下,时间应以UTC格式存储在数据库中,并且仅转换为某些本地时区(包括适当的DST因子)以供显示。如果“快速比较”是您的目标,那么尤其为真。
您可能会发现最简单的方法是添加一个包含UTC时间的额外字段,修改客户端以添加此信息,并运行一次性为现有条目计算的脚本。
答案 1 :(得分:2)
我可以存储一个CurrentOffset字段,该字段需要通过脚本进行更新,该脚本将每小时更新一次,以确定上下文偏移量。