在Laravel中,Illuminate\Database\Schema\Blueprint
类有两种方法,我想具体了解它们之间的区别。
$table->dateTime()
和
$table->timestamp()
两者都以明显的方式存储日期。 有人开导我吗?
答案 0 :(得分:4)
所以这个秘诀就是要了解每个人究竟做了什么。
Laravel中的dateTime()
和timestamp()
函数使用不同的表格列。
dateTime()
使用DATETIME作为数据库列类型。
timestamp()
使用TIMESTAMP作为数据库列类型。
DATETIME
和TIMESTAMP
有很多相似之处,但差异本身就在Laravel之外,在MySQL中更多。
他们的主要区别在于范围。对于DateTime,最长为9999
年,而时间戳仅为2038
年。其他差异包括存储每个字节所需的字节数。
我发现了一篇很好的文章,清楚地说明了http://www.c-sharpcorner.com/article/difference-between-mysql-datetime-and-timestamp-datatypes/
的相似点和不同点希望这有帮助。
答案 1 :(得分:2)
$table->dateTime()
在表上创建一个新的日期时间列。而另一方面,
$table->timestamp()
在表上创建一个新的时间戳列。
如果您在确定时间戳与日期时间之间的区别时遇到问题,
DATETIME表示日期(在日历中找到)和时间(可以在挂钟上观察到)
而且,
TIMESTAMP代表一个定义明确的时间点。如果您的应用程序处理时区,这可能非常重要。多久以前' 2010-09-01 16:31:00'?这取决于你所在的时区。
另外,如有任何不便,可以参考BluePrint Documentation。
答案 2 :(得分:0)
timestamp
和dateTime
将日期(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_at
和updated_at
时间戳字段添加到数据库的快捷方式。