没有日期函数的SQL日期有什么用?

时间:2012-12-12 13:55:47

标签: sql datetime semantics abstraction

我使用过各种ORM和数据库抽象,旨在简化多个数据库的工作,包括关系数据库和非关系数据库。更全面的解决方案通常会让您访问一些日期函数,这些日期函数可以归结为实际的SQL(或者在非SQL dbs的情况下)。另一方面,许多这些抽象不提供对SQL函数的直接访问,并且您无法直接处理日期。相反,你应该使用上层语言(PHP,Python,等等)进行日期纠缠,最后只插入,选择,你有什么格式化的日期。

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

2 个答案:

答案 0 :(得分:3)

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

这不仅可以更容易地在数据库和应用程序之间进行转换,而且当您需要根据日期执行任何操作时(您将会,为什么存储日期?)

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

答案 1 :(得分:1)

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

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

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

  • BUT ,Integer占用4个字节,Datetime占用8个字节。 You are better off 4 bytes if you are within above two limitations.