在数据库中保存日期

时间:2013-02-01 13:54:58

标签: mysql sql

在数据库中保存日期时,我一直认为最好用 time()函数保存日期,因为它更准确但我也看到人们保存日期之类的 2013-02-01

推荐哪一个?或者您是否应该使用其中一种?

3 个答案:

答案 0 :(得分:0)

我宁愿将日期保存为DATE而不是INT,因为:

  • 更具可读性
  • 现在还是约会!

无论如何它仍然是你的选择,考虑一下,

SELECT UNIX_TIMESTAMP(CURDATE()), CURDATE()

将导致

UNIX_TIMESTAMP(CURDATE())   CURDATE()
1359676800                  2013-02-01 00:00:00

答案 1 :(得分:0)

始终保存为日期的文字表示,即YYYY-MM-DD。人类更容易阅读,而不仅限于Unix时间戳整数的限制(你只能向前走这么远,或者到目前为止只能用整数)。

答案 2 :(得分:0)

标准化ISO 8601是比较保守的,比转换到time_t UNIX纪元要容易得多。

第二天的开始可能会受到小时偏移的影响,因此可能会出现时区问题。在夏令时期间,可能会影响当天的开始。使用time_t 可能会消除这些问题的歧义,但它也可能会出现问题,因为您没有正确翻译time_t以达到预期的效果。

由于UNIX时间纪元有一个时间组件,如果您发送time_t值并让数据库将其转换为日期,则可能会出现问题。数据库可以用你没想到的方式翻译它。但是,如果您发送日期,数据库将带您到您的单词,存储该日期(无论它认为该日期在哪个时区)并返回该确切日期。

现在,根据您获取SQL中包含的日期值的方式,可能会出现这样的翻译问题。但是,这在您的代码中会出现问题,您可能希望数据库没有翻译或更改您发送的值。

我坚持把它作为日期输入,因为它是可读的,它是一个约会,它不会比time_t更多的问题,即使问题在不同的情况下发生。