如何使用带CONVERT_TZ()的MySQL获取每天的最后一个条目

时间:2011-07-18 03:19:23

标签: php mysql timezone 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 个答案:

答案 0 :(得分:0)

如果要在极端中选择单个行,可以通过按所需条件对结果集进行排序并将输出限制为单个行来尝试。也许是某种东西,比如

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()(您要搜索的日期)以满足您的需求。