在Laravel中,Illuminate\Database\Schema\Blueprint
类有两种方法,我想具体了解它们之间的区别。
$table->dateTime()
和
$table->timestamp()
它们以相同的可见方式存储日期。 有人可以启发我吗?
dateTime()
和 timestamp()
函数使用不同的表列。
dateTime()
使用 DATETIME 作为数据库列类型。timestamp()
使用 TIMESTAMP 作为数据库列类型。
DATETIME
和 TIMESTAMP
相似之处很多,但它们的区别主要在于 MySQL 而不是 Laravel。它们的主要区别在于范围。DateTime 的范围高达年份 9999
,而 timestamp 的范围仅限于年份 2038
。其他区别包括存储每个属性所需的字节数量。$table->dateTime()
在表格上创建一个新的日期时间列。而另一方面,$table->timestamp()
在表格上创建一个新的时间戳列。
如果您无法确定时间戳和日期时间之间的区别,
DATETIME表示日期(如日历中所示)和时间(可以在挂钟上观察到)。
而且,
TIMESTAMP表示一个明确定义的时间点。 如果您的应用程序处理时区,则这可能非常重要。 "2010-09-01 16:31:00"是多久之前的时间? 这取决于您所在的时区。
此外,您可以参考BluePrint文档以获取任何不便之处。
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
时间戳字段的快捷方式。