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

Gom*_*oms 10 php mysql timestamp laravel laravel-5

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

$table->dateTime() 
Run Code Online (Sandbox Code Playgroud)

$table->timestamp()
Run Code Online (Sandbox Code Playgroud)

两者都以明显相同的方式存储日期。有人启发我吗?

小智 12

因此,这样做的秘诀是了解它们各自的功能。

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

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

DATETIMETIMESTAMP有很多相似之处,但区别在于Laravel以外,而MySQL则更多。

它们的主要区别是范围。对于DateTime,最多可使用一年,9999而对于时间戳记,最多可使用一年2038。其他差异包括存储每个字节所需的字节数。

我在这里找到了一篇很好的文章,清楚地阐明了两者的异同:http://www.c-sharpcorner.com/article/difference-between-mysql-datetime-and-timestamp-datatypes/

希望这可以帮助。


Che*_*tta 8

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 UTCdateTime的范围为 1000-01-01 00:00:00 到 9999-12-31 23:59 :59 世界标准时间

timestamps不带参数,这是将created_atupdated_at时间戳字段添加到数据库的快捷方式。

  • 那么到 2038 年我们会再次遇到千年虫问题吗? (3认同)

And*_*uib 6

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

如果您在确定时间戳记日期时间之间的差异遇到问题,

DATETIME表示日期(在日历中可以找到)和时间(可以在挂钟上看到)

和,

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

另外,如果有任何不便,您可以参考BluePrint文档