3

我使用过各种 ORM 和数据库抽象,旨在使使用多个数据库(包括关系型和非关系型数据库)变得容易。更全面的解决方案通常会让您访问一些归结为实际 SQL 的日期函数(或其他任何东西,在非 SQL 数据库的情况下)。另一方面,这些抽象中的许多不提供对 SQL 函数的直接访问,并且您失去了直接处理日期的能力。相反,您应该使用上层语言(PHP、Python 等)来处理日期,最后只插入、选择、格式化日期。

所以我的问题是:如果 SQL 服务器永远不会对日期本身做任何事情,我最好只使用一个 int 并将纪元时间戳放入其中,或者数据库服务器“知道”它是一个日期是否有额外的价值?

4

2 回答 2

3

如果您使用日期,请将它们存储为日期。

这不仅使数据库和应用程序之间的转换更容易,而且当您需要根据日期执行任何操作时(您会这样做,否则为什么要存储日期?)。

也就是说,当您需要使用日期进行排序或查询时,您无需费力地重新转换为日期。

于 2012-12-12T13:59:10.400 回答
1

除此之外@Oded said,如果您从未使用过任何与日期相关的功能,仍然存在一些问题;

  • 目前,您cannot store epoch timestamp in milliseconds into an INT字段(溢出)。

  • 没有毫秒的时间戳将在INT上溢出,Tue Jan 19 2038 @ 03:14:08 GMT+0000 (GMT)因为它将大于2147483647.

  • 但是,整数需要 4 个字节,而日期时间需要 8 个字节。You are better off 4 bytes if you are within above two limitations.

于 2012-12-12T14:31:52.410 回答