Laravel - timestamp() 和 timestampTz() 有什么区别?

Tin*_*tin 5 laravel

Laravel 的 Schema Builder 中的 timestamps() 和 timestampsTz() 方法有什么区别?我尝试搜索谷歌,但找不到任何帮助。

Tst*_*tar 5

基本上 timestampsTz() 代表Timestamp with Timezone而 timestamps() 就像Timestamp without timezone

TimestampsTz()是特定时间点的表示。对这个时间的调整是由与您的系统相关的时区进行的。

正常timestamps()更像是正常时钟的表示。

看看这个例子:

如果您正在使用该timestamps()功能,您还将存储您的环境选择的时区。如果您使用的是timestampsTz(),则时区将不安全。

我想当timestamp without timezone您的所有数据都确定在同一区域时使用会是一个很好的做法,或者您在那里有另一个处理时间转换的层。

更新:

在数据库中,正常timestamps()看起来像

2004-10-19 10:23:54
Run Code Online (Sandbox Code Playgroud)

虽然timestampsTz()看起来像

2004-10-19 10:23:54+02
Run Code Online (Sandbox Code Playgroud)

更新 2:

这些函数在 Laravel 中可用于每种类型的数据库。但这仅适用于 PostgreSQL。查看文档:PostgreSQL Timestamp。在其他数据库中,时区信息自动包含在时间戳中。

在所有其他数据库中,这将具有相同的输出。