我有命令:
$night_command = Yii::app()->db->createCommand()
->select('COUNT(d1.id)')
->from('diary1 as d1')
->where('d1.deleted = 0 AND TIME(d1.datetime_created) BETWEEN "04:59:00" AND "17:59:00"');
$night_command->getText(); // this is query that i copy to client app
$night_command->queryScalar(); // returns 4
$night_command->getText()
返回查询:
SELECT COUNT(d1.id)
FROM `diary1` `d1`
WHERE d1.deleted = 0 AND TIME(d1.datetime_created) BETWEEN "04:59:00" AND "17:59:00"
当我复制并运行此查询时 - 我得到25(而不是4)。为什么?似乎比较时间是有问题的,因为没有它,一切都运作良好。 datetime_created
列具有DATETIME类型。
答案 0 :(得分:0)
问题出在db
组件的配置中。它有一个参数
'initSQLs' => array(
'SET time_zone = "+10:00"',
),
在DATETIME
列中添加+10(在我的情况下为+8)小时。例如。如果在DB中我有值“11.01.2016 13:21:05”(我的当地时区是UTC + 2),则Yii返回值“11-01-2016 21:21:05”(对于UTC + 10)。因此,或者对此参数发表评论或请注意,DATETIME
和TIME
列在Yii中的值不同。