Yii CDbCommand返回的值不同于MySQL客户端

时间:2016-06-08 15:49:01

标签: php mysql yii

我有命令:

$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类型。

1 个答案:

答案 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)。因此,或者对此参数发表评论或请注意,DATETIMETIME列在Yii中的值不同。