Blueprint类中timestamp()和dateTime()方法的区别

30

在Laravel中,Illuminate\Database\Schema\Blueprint类有两种方法,我想具体了解它们之间的区别。

$table->dateTime() 

$table->timestamp()

它们以相同的可见方式存储日期。 有人可以启发我吗?

3个回答

55
因此,秘诀在于理解每个函数的确切作用。
Laravel 中的 dateTime()timestamp() 函数使用不同的表列。 dateTime() 使用 DATETIME 作为数据库列类型。timestamp() 使用 TIMESTAMP 作为数据库列类型。 DATETIMETIMESTAMP 相似之处很多,但它们的区别主要在于 MySQL 而不是 Laravel。它们的主要区别在于范围。DateTime 的范围高达年份 9999,而 timestamp 的范围仅限于年份 2038。其他区别包括存储每个属性所需的字节数量。
我找到了一篇很好的文章,在这里清楚地说明了两者之间的相似之处和区别:http://www.c-sharpcorner.com/article/difference-between-mysql-datetime-and-timestamp-datatypes/ 希望这可以帮助你。

10

$table->dateTime()在表格上创建一个新的日期时间列。而另一方面,$table->timestamp()在表格上创建一个新的时间戳列。

如果您无法确定时间戳和日期时间之间的区别,

DATETIME表示日期(如日历中所示)和时间(可以在挂钟上观察到)。

而且,

TIMESTAMP表示一个明确定义的时间点。 如果您的应用程序处理时区,则这可能非常重要。 "2010-09-01 16:31:00"是多久之前的时间? 这取决于您所在的时区。

此外,您可以参考BluePrint文档以获取任何不便之处。


8
timestampdateTime在单个字段中一起存储日期(YYYY-MM-DD)和时间(HH:MM:SS),即YYYY-MM-DD HH:MM:SS。
两者之间的区别在于,当数据库记录更新时,timestamp可以使用CURRENT_TIMESTAMP作为其值。 timestamp的限制是1970-01-01 00:00:01 UTC到2038-01-19 03:14:07 UTC。dateTime的范围是1000-01-01 00:00:00到9999-12-31 23:59:59 UTC。 timestamps不需要参数,它是向数据库添加created_atupdated_at时间戳字段的快捷方式。

如果我理解正确,这两个函数都绑定到MySQL,如果它是我的数据库管理系统? - Goms
3
2038年我们将再次遇到Y2K问题吗? - Grant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接