在数据库中将日期和时间存储为epoch vs native datetime格式

时间:2010-04-12 17:23:19

标签: datetime scripting-language epoch

对于我的大多数任务,我发现使用纪元格式处理日期和时间要容易得多:  

  • 计算时间跨度是微不足道的
  •  
  • 或确定某个事件是否发生在另一个事件之前或之后,
  •  
  • 如果数据来自不同的地理来源,我不必处理时区问题,
  •  
  • 在脚本语言的情况下,当我请求datetime-typed列时,我通常从数据库获取的是一个字符串,我需要解析它才能使用它。
  • 这个列表可以继续,但对我来说,为了保持我的代码可移植性,这足以抛弃数据库的本机日期时间格式并将日期和时间存储为整数。你们觉得怎么样?

    3 个答案:

    答案 0 :(得分:0)

    您应该能够使用UTC日期时间来解决时区问题。我知道C具有将纪元时间转换为UTC的功能。我找不到另一种方式,这让我很困惑。

    答案 1 :(得分:0)

    我认为我在MVC中使用适当的Model对象和方法这些日期和时间功能变得微不足道。我取决于日期&时间库来计算。很少有几次我必须自己编写,而实际上那些时候我忽略了功能已经在库中的事实。如果您使用PHP,请从Zend Framework中获取日期和时间库。一旦你开发了你的模型重用它。那你就不在乎日期和时间是如何存储在数据库中的。

    答案 2 :(得分:0)

    使用数据库的DATETIME类型的主要原因是POSIX time_t的范围非常有限;你不能存储超过臭名昭着的Y2038的日期,或者在1904年左右之前存储日期。由于许多数据库需要存储历史或未来的日期,所以有一个完整的范围,通常是可移植的DATETIME;如果事实上POSIX纪元时间对你更有用,那么继续使用它们。