【问题标题】:How does a Laravel schema builder dateTimeTz example look?Laravel 模式构建器 dateTimeTz 示例的外观如何?
【发布时间】:2016-07-25 20:12:26
【问题描述】:

因为它在此处的可用列类型部分中列出:https://laravel.com/docs/5.2/migrations#creating-columns

我们可以定义一个类型为 'dateTimeTz' 的新列,但是它几乎不知道它应该是什么样子,或者它是否就像一个标准的 DateTime 对象。我一直在搜索有关此类型的所有地方,但找不到任何相关内容。

有人能解释一下这个和'dateTime'的区别吗?

【问题讨论】:

  • 我在这里猜测 - 存储的值将包含时区偏移量,例如 +03:00 将添加到值中。检索时,日期从通常的Y-m-d H:i:s 格式解析,时区从偏移量计算。由于 PHP 的 DateTime 接受 DateTimeZone 作为参数,因此 DateTimeZone 将从这个提到的偏移量中计算出来。至少我会这样做。

标签: php laravel datetime laravel-5.2


【解决方案1】:

datetimeTz 列字段实际上是从Doctrine's datetimetz 导入的,带有附加时区信息。

一般来说,这有助于通过设置时区信息来处理 PHP 的 Datetime 对象。要了解有关何时以及何时不应该使用它的更多信息,您应该阅读此https://derickrethans.nl/storing-date-time-in-database.html

【讨论】:

  • 那么,我看到的是不建议将日期与时区一起存储,而是我应该单独存储时区并将所有内容转换为UTC,然后再将日期存储到数据库中?
【解决方案2】:

看起来这只是支持两种不同类型的数据库系统的一个选项——没有时区信息的日期时间和有时区信息的日期时间。

我猜如果您将dateTimeTz 类型与不支持它的数据库一起使用,它会退回到dateTime

类似问题here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-19
    • 2018-11-18
    • 1970-01-01
    • 2017-05-21
    • 2019-08-19
    • 1970-01-01
    • 2013-06-02
    • 2019-06-21
    相关资源
    最近更新 更多