Mysql:如何保存时间戳UTC而又不从mysql时区更改它? [重复]

问题描述 投票:0回答:1

此问题已经在这里有了答案:

此问题与将时间戳存储到日期时间中的问题不同。我有时间戳记,所以没有tz信息。我也不能改变我的数据库结构我使用的是雄辩的,但值得一提的是,手动执行MySQL查询插入时也会发生此问题

我在做什么

我的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',

此问题与将时间戳存储到日期时间中的问题不同。我有时间戳记,所以没有tz信息。同样,我无法雄辩地改变我的数据库结构,但值得一提的是...

mysql laravel unix-timestamp
1个回答
0
投票

我确定在我的MySQL连接配置的选项中强制使用utc。

© www.soinside.com 2019 - 2024. All rights reserved.