Blueprint类

时间:2017-12-19 00:12:11

标签: php mysql laravel laravel-5 timestamp

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

$table->dateTime() 

$table->timestamp()

两者都以明显的方式存储日期。 有人开导我吗?

3 个答案:

答案 0 :(得分:4)

所以这个秘诀就是要了解每个人究竟做了什么。

Laravel中的dateTime()timestamp()函数使用不同的表格列。

dateTime()使用DATETIME作为数据库列类型。 timestamp()使用TIMESTAMP作为数据库列类型。

DATETIMETIMESTAMP有很多相似之处,但差异本身就在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)

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时间戳字段添加到数据库的快捷方式。