Php Yii2型号->;created_日期在将来,查询时不会返回

Php Yii2型号->;created_日期在将来,查询时不会返回,php,mysql,datetime,timestamp,yii2,Php,Mysql,Datetime,Timestamp,Yii2,我已经将Yii->application->configuration->timezone设置为UTC,并让modelattributeBehaviors使用PHP的time()方法自动插入/更新时间戳 问题是,保存到db的时间戳是在将来,当我对今天的记录执行搜索查询时,如果它们是在10点到午夜之间创建的,则不会返回,因为时间戳实际上是明天 如何创建记录并执行搜索查询 谢谢。似乎PHP和MySQL时区之间存在差异 尝试执行以下操作: echo date_default_timezone_get(

我已经将
Yii->application->configuration->timezone
设置为
UTC
,并让model
attributeBehaviors
使用PHP的
time()
方法自动插入/更新时间戳

问题是,保存到db的时间戳是在将来,当我对今天的记录执行搜索查询时,如果它们是在10点到午夜之间创建的,则不会返回,因为时间戳实际上是明天

如何创建记录并执行搜索查询


谢谢。

似乎PHP和MySQL时区之间存在差异

尝试执行以下操作:

echo date_default_timezone_get() . "<br>";
echo Yii::$app->formatter->timeZone . "<br>";
echo Yii::$app->formatter->defaultTimeZone  . "<br>";
echo Yii::$app->db->createCommand('SELECT @@time_zone')->queryScalar()  . "<br>";
echo Yii::$app->db->createCommand('SELECT @@system_time_zone')->queryScalar()  . "<br>";
echo date\u default\u timezone\u get()。“
”; echo Yii::$app->formatter->timeZone。“
”; echo Yii::$app->formatter->default时区。“
”; echo Yii::$app->db->createCommand('SELECT@@time\u zone')->queryScalar()。“
”; echo Yii::$app->db->createCommand('SELECT@@system\u time\u zone')->queryScalar()。“
”;
(该查询是针对MySQL DBMS的,如果您有另一个,那么该查询也将是另一个)


当您看到差异时,您必须在PHP和MySQL中设置相同的时区(,)

我研究了这一冲突,认为可以绕过冲突的是全局设置Yii/PHP时区,而不使用MySQL时间函数。我使用attributeBehaviors来保存
time()
,它应该使用PHP时区。对吗?今晚我将运行此测试。以下是响应:UTC系统GMT+4这是您的问题。您以UTC创建日期,MySQL认为它是UTC+4中的日期。您必须为每个连接设置UTC或Yii2中的正确时区。为此,打开config.php(其中设置了DB用户和密码)并设置时区,如图所示,我昨晚在connect上找到了Yi2修改MySQL时区的代码片段。既然它们已经同步,就没有任何问题了。谢谢