【发布时间】:2018-06-01 09:01:12
【问题描述】:
在 Laravel 中,Illuminate\Database\Schema\Blueprint 类有两个方法,我想具体了解它们之间的区别。
$table->dateTime()
和
$table->timestamp()
两者都以相同的方式明显地存储日期。 有没有大神赐教?
【问题讨论】:
标签: php mysql laravel laravel-5 timestamp
在 Laravel 中,Illuminate\Database\Schema\Blueprint 类有两个方法,我想具体了解它们之间的区别。
$table->dateTime()
和
$table->timestamp()
两者都以相同的方式明显地存储日期。 有没有大神赐教?
【问题讨论】:
标签: php mysql laravel laravel-5 timestamp
因此,秘诀在于了解每个人的具体作用。
Laravel 中的 dateTime() 和 timestamp() 函数使用不同的表列。
dateTime() 使用 DATETIME 作为 DB 列类型。
timestamp() 使用 TIMESTAMP 作为 DB 列类型。
DATETIME 和 TIMESTAMP 有很多相似之处,但不同之处在于 Laravel 之外,而在 MySQL 中则更多。
它们的主要区别在于范围。对于 DateTime,它的最高年份为 9999,而对于时间戳,其最高年份为 2038。其他差异包括存储每个所需的字节数。
我找到了一篇很好的文章,在这里http://www.c-sharpcorner.com/article/difference-between-mysql-datetime-and-timestamp-datatypes/@
清楚地说明了两者的异同希望这会有所帮助。
【讨论】:
$table->dateTime()
在表上创建一个新的日期时间列。而另一方面,
$table->timestamp()
在表上创建一个新的时间戳列。
如果您在识别 timestamp 和 datetime 之间的差异时遇到问题,
DATETIME 表示日期(在日历中找到)和时间(可以在挂钟上观察到)
还有,
TIMESTAMP 表示一个明确定义的时间点。如果您的应用程序处理时区,这可能非常重要。 '2010-09-01 16:31:00' 是多久以前的事了?这取决于你所在的时区。
另外,如有任何不便,您可以参考BluePrint Documentation。
【讨论】:
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 时间戳字段添加到数据库的快捷方式。
【讨论】: