Mysql:如何在不更改 mysql 时区的情况下保存 UTC 时间戳?
Mysql: how to save a timestamp UTC without it being altered from mysql timezone?
这道题不同于将时间戳存入日期时间的题。
我有一个时间戳,所以没有 tz 信息。
我也不能改变我的数据库结构
我正在使用 eloquent,但值得一提的是,这个问题也发生在手动执行 MySQL 查询 insert
我在做什么
我的 API 收到了这个时间戳:
1572864543
是
Assuming that this timestamp is in seconds:
GMT: Monday 4 November 2019 10:49:03
Your time zone: lunedì 4 novembre 2019 11:49:03 GMT+01:00
当我在数据库上保存时,我不知道用户的 MySQL 时区配置是什么,但我需要 MySQL 绝对不要改变我的时间戳。
我确定 MySQL 列是 timestamp
我知道在 Laravel 中存储时间戳需要在类似 sql 的字符串中进行转换
我试过
Carbon::createFromTimestamp($claims["date"])->toDateTimeString();
问题
有效,但 MySQL 获取我的字符串,应用 其 时区设置,更改为 UTC 并在内部保存新时间戳。
所以在检索时
UNIX_TIMESTAMP(received_ts)
我得到了错误的结果。
问题
我绝对需要在数据库中保持我的时间戳不变。如何在不更改时间戳的情况下保存它?
混合信息
这是因为我的产品安装在一个不可预测的服务器时区;我也不能强制用户将数据库时区更改为 UTC。
实际上,我的应用程序的时区已经通过 laravel config/app.php
文件
强制设置为 'UTC'
'timezone' => 'UTC',
我解决了在 MySQL 连接配置的选项中强制使用 utc。
MySQL 现在不改变任何时间戳
这道题不同于将时间戳存入日期时间的题。 我有一个时间戳,所以没有 tz 信息。 我也不能改变我的数据库结构 我正在使用 eloquent,但值得一提的是,这个问题也发生在手动执行 MySQL 查询 insert
我在做什么
我的 API 收到了这个时间戳:
1572864543
是
Assuming that this timestamp is in seconds:
GMT: Monday 4 November 2019 10:49:03
Your time zone: lunedì 4 novembre 2019 11:49:03 GMT+01:00
当我在数据库上保存时,我不知道用户的 MySQL 时区配置是什么,但我需要 MySQL 绝对不要改变我的时间戳。
我确定 MySQL 列是 timestamp
我知道在 Laravel 中存储时间戳需要在类似 sql 的字符串中进行转换
我试过
Carbon::createFromTimestamp($claims["date"])->toDateTimeString();
问题
有效,但 MySQL 获取我的字符串,应用 其 时区设置,更改为 UTC 并在内部保存新时间戳。
所以在检索时
UNIX_TIMESTAMP(received_ts)
我得到了错误的结果。
问题
我绝对需要在数据库中保持我的时间戳不变。如何在不更改时间戳的情况下保存它?
混合信息
这是因为我的产品安装在一个不可预测的服务器时区;我也不能强制用户将数据库时区更改为 UTC。
实际上,我的应用程序的时区已经通过 laravel config/app.php
文件
'timezone' => 'UTC',
我解决了在 MySQL 连接配置的选项中强制使用 utc。
MySQL 现在不改变任何时间戳