【问题标题】:Difference between timestamp() and dateTime() methods of the Blueprint classBlueprint 类的 timestamp() 和 dateTime() 方法之间的区别
【发布时间】:2018-06-01 09:01:12
【问题描述】:

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

$table->dateTime() 

$table->timestamp()

两者都以相同的方式明显地存储日期。 有没有大神赐教?

【问题讨论】:

    标签: php mysql laravel laravel-5 timestamp


    【解决方案1】:

    因此,秘诀在于了解每个人的具体作用。

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

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

    DATETIMETIMESTAMP 有很多相似之处,但不同之处在于 Laravel 之外,而在 MySQL 中则更多。

    它们的主要区别在于范围。对于 DateTime,它的最高年份为 9999,而对于时间戳,其最高年份为 2038。其他差异包括存储每个所需的字节数。

    我找到了一篇很好的文章,在这里http://www.c-sharpcorner.com/article/difference-between-mysql-datetime-and-timestamp-datatypes/@

    清楚地说明了两者的异同

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

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

      如果您在识别 timestampdatetime 之间的差异时遇到问题,

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

      还有,

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

      另外,如有任何不便,您可以参考BluePrint Documentation

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 如果我理解的话,如果它是我的 DBMS,这两个函数都绑定到 MySQL ?
        • 那么在 2038 年我们会再次遇到千年虫问题吗?
        猜你喜欢
        • 1970-01-01
        • 2016-04-21
        • 2013-07-01
        • 1970-01-01
        • 2023-01-10
        • 1970-01-01
        • 2015-04-22
        • 2012-02-22
        • 2015-07-11
        相关资源
        最近更新 更多