php - 调用数据库返回不完整的数据

标签 php mysql laravel lumen

我有一个 SQL 查询:

select count(*) AS revolutions, DATE_FORMAT(time, '%Y-%m-%d %H') as time_period from `raw_data` where `time` >= '2016-09-10 21:51:33' group by `time_period`

这会在 MySQL 客户端中返回以下数据:

revolutions | time_period
630         | 2016-09-10 23
2062        | 2016-09-11 00
1839        | 2016-09-11 01
377         | 2016-09-11 02
83          | 2016-09-11 03
325         | 2016-09-11 04

在 Laravel 中,我构建了一个相同的查询,其转储如下所示:

["sql"]=>
  string(136) "select count(*) AS revolutions, DATE_FORMAT(time, '%Y-%m-%d %H') as time_period from `raw_data` where `time` >= ? group by `time_period`"
  ["bindings"]=>
  array(1) {
    [0]=>
    string(19) "2016-09-10 22:02:02"
  }

但这会返回以下数据集:

[
  {

    "revolutions": 1863,
    "time_period": "2016-09-10 22"
  },
  {
    "revolutions": 1839,
    "time_period": "2016-09-10 23"
  },
  {
    "revolutions": 377,
    "time_period": "2016-09-11 00"
  },
  {
    "revolutions": 83,
    "time_period": "2016-09-11 01"
  },
  {
    "revolutions": 325,
    "time_period": "2016-09-11 02"
  }
]

什么可能导致 02 上的数据丢失,以及 03 和 04 上的数据不存在?

编辑:未在 Lumen 设置时区。

修复方法是将配置值添加到 .env

DB_CONNECTION=mysql
DB_TIMEZONE=+02:00

最佳答案

time 似乎是 timestamp 类型,它将时间转换为客户端在连接后应立即明确指定的时区。

要明确设置它,必须发出

SET time_zone = timezone;

查询。

默认值来自配置(或 CLI 参数)指令 default-time-zone

引用文献:

关于php - 调用数据库返回不完整的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39441081/

相关文章:

php - PHP 中的函数已弃用,我现在应该使用什么?

php - file_get_contents 和 twitter 的奇怪问题

php - 使用单词边界时的奇怪行为 [[ :<:]] and [[:>]]

Laravel 5 错误处理

javascript - Jquery ajax() 函数不会加载 PHP 脚本

php - 在重定向 php 之前执行代码

mysql - 如何通过关系使用 has_many 缩短三重连接 ActiveRecord 查询?

mysql - 在 Meteor 方法中检索 MySQL 插入 ID

php - ErrorException (E_ERROR) 试图获取非对象的属性 'id'(查看 : - laravel 5. 5

php - Laravel Blade 模板 Form::open() 到 Html