วันจันทร์ที่ 5 กันยายน พ.ศ. 2554

MYSQL กรองข้อมูลรายชั่วโมง-นาที + เลือกข้อมูลย้อนหลังไป 30 วัน

1.ข้อมูลเดิม แสดงทุก 15 นาที
SELECT 
  rawdata_t.TimeTag_DT,
  rawdata_t.Device_ID,
  rawdata_t.Reading_FL
FROM
  rawdata_t
WHERE
  rawdata_t.Device_ID = 7 AND 
  DATE_FORMAT(rawdata_t.TimeTag_DT, '%Y-%m-%d') BETWEEN DATE_ADD(curdate(), interval -30 DAY) AND CURDATE() #แสดงข้อมูล ย้อนหลังไป 30 วัน
ORDER BY
  rawdata_t.TimeTag_DT DESC



2. เปลี่ยนให้แสดงทุกชั่วโมง
SELECT 
  rawdata_t.TimeTag_DT,
  rawdata_t.Device_ID,
  rawdata_t.Reading_FL
FROM
  rawdata_t
WHERE
  rawdata_t.Device_ID = 7 AND 
  DATE_FORMAT(rawdata_t.TimeTag_DT, '%Y-%m-%d') BETWEEN DATE_ADD(curdate(), interval -30 DAY) AND CURDATE()
GROUP BY 
DATE(rawdata_t.TimeTag_DT), HOUR(rawdata_t.TimeTag_DT) #แสดงข้อมูลรายวันและทุก ๆ ชั่วโมง
ORDER BY
  rawdata_t.TimeTag_DT DESC



3. แสดงข้อมูลทุก 30 นาที
SELECT 
  rawdata_t.TimeTag_DT,
  rawdata_t.Device_ID,
  rawdata_t.Reading_FL
FROM
  rawdata_t
WHERE
  rawdata_t.Device_ID = 7 AND 
  DATE_FORMAT(rawdata_t.TimeTag_DT, '%Y-%m-%d') BETWEEN DATE_ADD(curdate(), interval -30 DAY) AND CURDATE()
GROUP BY 
DATE(rawdata_t.TimeTag_DT), HOUR(rawdata_t.TimeTag_DT), FLOOR(MINUTE(rawdata_t.TimeTag_DT)/30) #แสดงข้อมูลทุก 30 นาที
ORDER BY
  rawdata_t.TimeTag_DT DESC



ไม่มีความคิดเห็น:

แสดงความคิดเห็น