This question already has answers here:
How to store a datetime in MySQL with timezone info
                                
                                    (5个答案)
                                
                        
                                3个月前关闭。
            
                    
这个问题不同于将时间戳存储到datetime中的问题。
我有时间戳记,所以没有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)


我得到了错误的结果。



我绝对需要将时间戳保留在数据库中。如何保存时间戳而不进行更改?

混合信息

这是因为我的产品安装在不可预测的服务器时区中。我也不能强迫用户将db时区更改为UTC。

实际上,我的应用的时区已经通过laravel config/app.php文件强制为'UTC'

'timezone' => 'UTC',

最佳答案

我解决了在MySQL连接配置选项中强制使用utc的问题。

MySQL现在不更改任何时间戳

关于mysql - MySQL:如何保存时间戳UTC而又不从mysql时区更改它? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58692746/

10-17 03:06