在数据库中存储日期时间?

Cur*_*ite 3 sql asp.net datetime

我正在写博客,想在东部时区展示我的帖子.我认为存储所有UTC都是正确的方法.这会带来一些挑战:

  1. 我必须将所有时间从UTC转换为东部.这不是一个大问题,但增加了很多代码.

  2. 而"biggie"就是我通过传递一个查询ala blogger来使用短日期时间来引用这些帖子.问题是没有办法将短日期时间转换为正确的UTC日期,因为我缺少发布的时间信息.

嗯,在东部时间存储所有日期有什么问题吗?这肯定会使应用程序的其余部分更容易,但如果我需要更改时区,一切都将存储错误.

更新

@Jon,非常重视您的专业知识,但我已经决定在数据库中存储UTC时间是错误的.不过你可能会说服我!

所以,让我给你一个完整的瘦身.我将所有时间都转换为UTC,这需要在代码的声明部分中添加更多"语法".

我正在编码的是一个博客,所以我有2条路线,一条列表路线和一条细节路线.详细信息路径需要较短的日期,并且帖子的名称假设组合为唯一.这就是它崩溃的原因.我在查询中传递短路线.

根据时间的不同,我们可以将它包裹起来,使其为29或30.所以短日期必须正确,因为我在查询中没有足够的信息来确定如何将东部时间转换回UTC.

我存储了一个DatePosted"短日期",所有时间都是@ 12 AM用于SQL目的和FirstModified长日期.所以,我说,没问题,我只会将短日期存储在东部,然后将长日期转换为东部.不行,因为我无法使这些查询工作.

所以,我认为我错了.日期应始终存储在东部时间(我想要使用的时间).然后,如果用户想要更改时区(不是要求),我们只需浏览所有条目并进行更改.

也许,我正在考虑这个错误,但在我的情况下,只会使用东部时区,所以无论如何都浪费时间.

期待对此有任何意见!

关键问题:

  1. 我在查询中传递了一个短日期.如果这短短的日期是UTC然后在查询中的日期可能如果我通过短日期为东部的话,我需要一个LINQ到SQL语法,可以转换为SQL,让我比较日期由1被关闭不同时区的时间.

再次感谢您的帮助!

Jon*_*eet 5

将时间从UTC转换为东部时间不应添加"大量代码".它应该是一个单行.

我不确定你的第二点是什么意思 - 如果你详细说明它会有所帮助.如果您不知道所涉及的时区,您怎么能理解查询?如果您在东部时间有效地假设它,那么您可以进行适当的UTC转换.

在整个地方使用当地时间通常是一个坏主意.如果你只涉及一个时区,那就不算糟糕了,但是如果你想要使用其他时区,那就太可怕了.(这不仅仅是批量更新数据库的问题 - 它将是在整个应用程序中检查每一次使用日期的情况.)

转到UTC选项,IMO.