0

次の図に示すように、いくつかのレコードを保持するmysqlテーブルがあります。

date_timeフィールドにはdatetimeデータ型があります

指定された時間範囲のレコード数(sr13、r4、およびhuaweiのレコード数)をカウントするために、次のクエリがあります。

$date1 = "2012-01-02 03";
$date2 = "2014-12-30 24";
$counter_result = $this->db->query("select count(sr13) as count_sr13, count(r4) as count_r4, count(huawei) as count_huawei from cdrcount where date_time BETWEEN '$date1%' and '$date2%' ");

クエリは3つのフィールドの値を0として返します。クエリに何か問題がありますか?

4

3 に答える 3

0

その理由は、の値にが含まれているため、date_timeが暗黙的に文字列にキャストされたためです。したがって、文字列データ型の日付を、一致したレコードを含み、明らかに一致しなかった値と比較します。削除してみてください。BETWEEN%%

select  count(sr13) as count_sr13, 
        count(r4) as count_r4, 
        count(huawei) as count_huawei 
from    cdrcount 
where   date_time BETWEEN '$date1' and '$date2'

日付は有効な日付にフォーマットする必要があります。2012-01-02 03:00:00

于 2013-03-11T08:28:14.050 に答える
0

time_to_sec機能を試す

select count(sr13) as count_sr13, count(r4) as
count_r4, count(huawei) as count_huawei from cdrcount 
where time_to_sec(date_time) 
BETWEEN time_to_sec('date1') and time_to_sec('date2');
于 2013-03-11T08:29:29.700 に答える
0

日付を正しく比較するには、次の完全な値を使用する必要があります。

$date1 = "2012-01-02 03:00:00";
$date2 = "2014-12-30 23:59:59";

そして%、クエリからを削除します。

$counter_result = $this->db->query("select count(sr13) as count_sr13, count(r4) as count_r4, count(huawei) as count_huawei 
    from cdrcount 
    where date_time BETWEEN '$date1' and '$date2'");
于 2013-03-11T08:31:05.767 に答える