0

異なる日時スタンプを持つデータベースから値の合計を取得しようとしています。その日のテーブル内のすべての値の合計を毎日返すことを目指しています。私の店の手順は次のようになります。

DELIMITER //
DROP PROCEDURE get_reads;
CREATE PROCEDURE get_reads (IN  device varchar (20), IN start_date datetime, IN end_date datetime, IN read_type varchar(8))

BEGIN

    SELECT dr.date_time, sum(dr.device_reading)
    FROM DEVICE_DETAILS dd,
    DEVICE_READING dr
    WHERE dr.device_id = dd.device_id
    AND dd.serial_number = device
    AND dr.date_time BETWEEN start_date AND end_date
    AND dr.reading_type = read_type;



END//

一時的なテーブルなどを使用する必要があると思いますが、自分の状況に関するアドバイスをオンラインで見つけることができません.毎日、30分ごとに値があり、保存されたポロセデュアが日付範囲内の毎日の合計を返すようにしたいです.を渡します。データベースの列は次のようになります

+-----------+---------------------+--------------+----------------+-------+
| device_id | date_time           | reading_type | device_reading | units |
+-----------+---------------------+--------------+----------------+-------+
| E1        | 2012-11-19 00:29:00 | Profile      |   0.0719131800 | KW    |
| E1        | 2012-11-19 00:59:00 | Profile      |   0.0802306700 | KW    |
| E1        | 2012-11-19 01:29:00 | Profile      |   0.0767434100 | KW    |
| E1        | 2012-11-19 01:59:00 | Profile      |   0.0737920500 | KW    |
| E1        | 2012-11-19 02:29:00 | Profile      |   0.0794256700 | KW    |
| E1        | 2012-11-19 02:59:00 | Profile      |   0.0729868200 | KW    |
| E1        | 2012-11-19 03:29:00 | Profile      |   0.0745970500 | KW    |
| E1        | 2012-11-19 03:59:00 | Profile      |   0.0804993100 | KW    |
| E1        | 2012-11-19 04:29:00 | Profile      |   0.0837193100 | KW    |
| E1        | 2012-11-19 04:59:00 | Profile      |   0.0483004600 | KW    |
4

1 に答える 1

0

CAST(datetime AS DATE); を使用して解決されました。

DELIMITER //
DROP PROCEDURE get_reads;
CREATE PROCEDURE get_reads (IN  device varchar (20), IN start_date datetime, IN end_date datetime, IN read_type varchar(8))

    BEGIN

            SELECT dr.date_time, sum(dr.device_reading)
            FROM DEVICE_DETAILS dd,
            DEVICE_READING dr
            WHERE dr.device_id = dd.device_id
            AND dd.serial_number = device
            AND dr.date_time BETWEEN start_date AND end_date
            AND dr.reading_type = read_type
            GROUP BY CAST(dr.date_time AS DATE);



    END//
于 2013-02-28T15:29:38.777 に答える