เรียนทุกท่านครับ
รบกวนสอบถามเรื่องคำสั่ง SQL ในส่วนของ Group by ในความต้องการของ user อยาก แยกออกเป็นดังนี้
ส่วนของ SQL DB จัดเก็บ Date เป็น format ของ Unix ซึ่ง เวลาต้องการใช้ในการ Query ต้องแปลงออกมาเป็น datetime ปกติก่อน มีคำสั่งตามรูปข้างล่างครับ
Code (SQL)
SELECT count(dm_model) AS total,dm_model,DATEPART(dd,dbo.F_UNIX_TIME_TO_DATETIME(dev_log_datetime)) AS InsertDay,
DATEPART(mm,dbo.F_UNIX_TIME_TO_DATETIME(dev_log_datetime)) AS InsertMonth,
DATEPART(yyyy,dbo.F_UNIX_TIME_TO_DATETIME(dev_log_datetime)) AS InsertYear
FROM dev_log LEFT OUTER JOIN devices ON dev_log.device_id=devices.device_id
LEFT OUTER JOIN lots ON devices.lot_id=lots.lot_id
LEFT OUTER JOIN device_model ON lots.dm_id=device_model.dm_id
WHERE (dev_log_datetime BETWEEN 1466787600 AND 1467133199)
GROUP BY dm_model,DATEPART(dd,dbo.F_UNIX_TIME_TO_DATETIME(dev_log_datetime)),
DATEPART(mm,dbo.F_UNIX_TIME_TO_DATETIME(dev_log_datetime)),
DATEPART(yyyy,dbo.F_UNIX_TIME_TO_DATETIME(dev_log_datetime))
ORDER BY DATEPART(dd,dbo.F_UNIX_TIME_TO_DATETIME(dev_log_datetime)),
DATEPART(mm,dbo.F_UNIX_TIME_TO_DATETIME(dev_log_datetime)),
DATEPART(yyyy,dbo.F_UNIX_TIME_TO_DATETIME(dev_log_datetime))