Nic*_*May 402 time datetime timestamp ruby-on-rails date
根据我的经验,在编程时获得正确的日期/时间总是充满危险和困难.
如果仅仅由于绝大多数的选择,Ruby和Rails总是在这个问题上找不到我; 我从来不知道应该选哪个.
当我使用Rails并查看ActiveRecord数据类型时,我可以找到以下内容
:datetime,:timestamp,:time和:date
并且不知道差异是什么或者潜伏在哪里.
有什么不同?你用它们做什么的?
(PS我正在使用Rails3)
von*_*rad 559
ActiveRecord中不同日期/时间格式之间的差异与Rails几乎没有关系,而且与您正在使用的任何数据库有关.
使用MySQL作为一个例子(如果没有其他原因,因为它是最流行的),你有DATE,DATETIME,TIME和TIMESTAMP列数据类型; 就像你有CHAR,VARCHAR,FLOAT和INTEGER.
所以,你问,有什么区别?好吧,其中一些是不言自明的.DATE只存储一个日期,TIME只存储一天中的某个时间,同时DATETIME存储两者.
DATETIME和之间的区别TIMESTAMP有点微妙:DATETIME格式化为YYYY-MM-DD HH:MM:SS.有效范围从1000年到9999年(以及介于两者之间的所有内容.虽然从数据库中获取它时TIMESTAMP 看起来很相似,但它实际上只是unix时间戳的前沿.其有效范围从1970年到2038年.差异这里,除了数据库引擎中的各种内置函数之外,还有存储空间.由于DATETIME存储了年,月,日,时,分和秒中的每个数字,它总共消耗了8个字节.TIMESTAMP仅存储数量自1970-01-01以来的秒数,它使用4个字节.
您可以在此处阅读有关MySQL中时间格式之间差异的更多信息.
最后,它归结为您需要的日期/时间列.您需要在1970年之前或2038年之后存储日期和时间吗?使用DATETIME.您是否需要担心数据库大小并且您在该时间范围内?使用TIMESTAMP.你只需要存储日期吗?使用DATE.你只需要存储时间吗?使用TIME.
说完所有这些之后,Rails实际上会为你做出一些决定.双方:timestamp并:datetime会默认为DATETIME,而:date与:time对应于DATE和TIME分别.
这意味着在Rails中,您只需要决定是否需要存储日期,时间或两者.
小智 18
:datetime(8个字节)
:时间戳(4个字节)