对于MySQL和Sqlite3,迁移文件中的Rails'datetime和timestamp是相同的?

nop*_*ole 8 migration datetime timestamp ruby-on-rails

:datetime并且:timestamp在迁移文件中似乎在MySQL和Sqlite3中是相同的,并且它们都映射到datetime数据库端,除了我在正式文档中找不到它.

此外,什么什么时候,如果我们的Rails项目可以使用其他DBMS,那么,我们应该用:datetime:timestamp当我们script/generate(或rails generate)我们的模型或支架?

jig*_*fox 14

我建议使用:datetime,因为它很清楚使用什么.我认为数据库中的rails DATETIME用于两者都是因为使用unix时间戳或MySQL TIMESTAMP字段可以表示日期时间的问题.由于时间戳默认为32位整数(参见维基百科:时间戳),因此它只能表示日期之间的日期1901-12-13(或者1970-01-01如果不允许像MySQL这样的负值)2038-01-19.之前或之后它会溢出.这是2038年的问题.

因此,为了向所有人说清楚,我会:datetime在迁移中将其命名.

TIMESTAMP数据类型的范围为"1970-01-01 00:00:01"UTC到"2038-01-19 03:14:07"UTC.它具有不同的属性,具体取决于MySQL版本和运行服务器的SQL模式.这些属性将在本节后面介绍.资源