簡體   English   中英

調用 DB 返回不完整的數據

[英]Call to DB returning incomplete data

我有一個 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

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM