Как получить последнюю запись за каждый день, используя MySQL с CONVERT_TZ()
Поэтому я использую этот код для получения последней записи за каждый день из базы данных.
SELECT a.id, a.userid, a.jurisdiction, a.country, a.date
FROM dk_location_records AS a,
(SELECT userid, DATE(date) AS just_date, MAX(date) AS date
FROM dk_location_records
GROUP BY 1, 2 --userid, DATE(date)
) AS b
WHERE a.userid = b.userid
AND a.date = b.date;
Мой вопрос, как я могу включить что-то вроде: CONVERT_TZ( date, '+00:00', '+01:00' )
чтобы получить последнюю запись в день для другого часового пояса. Мне до сих пор удалось использовать CONVERT_TZ
просто отобразить конвертированные даты. Тем не менее, вы можете использовать MAX()
а также CONVERT_TZ()
все вместе?
1 ответ
Если вы хотите выбрать одну строку в крайнем случае, вы можете попробовать ее, упорядочив набор результатов по требуемым критериям и ограничив вывод одной строкой. Что-то, возможно, как
SELECT a.id, a.userid, a.jurisdiction, a.country, a.date
ORDER BY CONVERT_TZ( date, '+00:00', '+01:00') DESC
LIMIT 1
Это должно быть довольно быстро, чем сканирование таблицы подзапросов.
Хотя, возможно, я неправильно понимаю, что вы пытаетесь сделать здесь. Преобразование часового пояса не изменит порядок дат. Если вы хотите искать записи в течение дня в другом часовом поясе, можно попробовать
SELECT a.id, a.userid, a.jurisdiction, a.country, a.date
WHERE CAST(CONVERT_TZ(a.date, '+00:00', '+01:00') AS DATE) = CURDATE()
ORDER BY a.date DESC
LIMIT 1
Конечно, изменить '+01:00'
(часовой пояс пункта назначения) и CURDATE()
(дата, которую вы ищете), чтобы соответствовать вашим потребностям.