У меня есть этот запрос, который рассчитан на часы часов в течение месяца, включая текущий месяц на сегодняшний день, как и в этот час. Есть ли более эффективный способ написания этого запроса?
SELECT DATE_FORMAT(FROM_UNIXTIME(created_at), '%Y-%m') as month,
CASE WHEN DATE_FORMAT(FROM_UNIXTIME(created_at), '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')
THEN (DAYOFMONTH(NOW())*24)+ HOUR(NOW()) + (MINUTE(NOW())/60) + (SECOND(NOW())/3600)
ELSE DAY(LAST_DAY(DATE_FORMAT(FROM_UNIXTIME(created_at), '%Y-%m-%d')))*24
END As hours
FROM table1
GROUP
BY DATE_FORMAT(FROM_UNIXTIME(created_at), '%Y-%m')
Вы можете использовать определенную функцию даты и времени mysql как
SELECT month(FROM_UNIXTIME(created_at)) as month,
CASE WHEN month(FROM_UNIXTIME(created_at)) = month(now())
THEN TIMESTAMPDIFF(HOUR,DATE_FORMAT(NOW() ,'%Y-%m-01'),NOW())
ELSE HOUR(LAST_DAY(DATE_FORMAT(FROM_UNIXTIME(created_at), '%Y-%m-%d')))
END As hours
FROM table1
GROUP BY month(FROM_UNIXTIME(created_at))