linq-to-sql - 如何存储和比较时区敏感时间

标签 linq-to-sql sql-server-2008 datetime timezone

我有一个数据结构,其中实体的时间存储为 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/

相关文章:

ruby-on-rails - 如何在 Rails 中不使用自定义格式的情况下显示带有 am/pm 的日期时间

python - 在 python 中得到错误的时间增量

c# - DotNet HighCharts ,用查询结果填充饼图

c# - 如何反转 LINQ to SQL 查询

c# - "unrecognized expression node array index linq"LINQ to SQL 中的异常

linq - 如何将U放入F#类型提供者CRUD中?

sql-server-2008 - 将大字段 (varbinary(max)) 复制到文件/剪贴板

sql - TSQL 返回 NO 或 YES,而不是 TRUE 或 FALSE

sql - 消息传递功能 创建 Sql 查询和数据库 View

ios - 如何在 swift 的第二个日期选择器中显示第一个日期选择器的选定日期