[英]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.