我有一个数据结构,其中实体的时间存储为 int
(一天中的几分钟)以进行快速比较。该实体还有一个外键引用,返回到包含 .NET CLR ID 名称及其标准时间/夏令时首字母缩略词的 TimeZone 表。
由于此信息存储为时区不敏感 - 我想知道如何在 LINQ to SQL 中将其转换为 UTC DateTime 以与 UTC 中的其他时间进行比较。
为了清楚起见,必须完成此转换 服务器端这样我就可以在 SQL Server 而不是客户端上执行过滤。这样做的原因是为了确保我们考虑支持它的时区的 DST。
我正在使用 .NET 3.5 SP1 和 SQL Server 2008。
最佳答案
理想情况下,时间应以 UTC 格式存储在数据库中,并且仅转换为某个本地时区(在适当的情况下将包括 DST 因素)以进行显示。如果“快速比较”是您的目标,则尤其如此。
您可能会发现添加一个包含 UTC 时间的额外字段、修改客户端以添加此信息并运行一个脚本为现有条目一次性计算它是最容易的。
关于linq-to-sql - 如何存储和比较时区敏感时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2560785/