我正在创建一个需要在不同时区工作的应用程序。由于我无法访问服务器配置,因此我需要在查询期间转换所有时间戳。我通常会将所有日期设置为UTC,然后计算出相应的偏移量,但我现在无法访问它。
我目前正在尝试查询过去一天的数据。我不关心过去24小时,我只关心数据是否仅在过去一天。
以下是我需要帮助的一个查询示例:
SELECT
count(u.id) as total_count, uf.user_id, uf.friend_id, u.username, u.image_location, u.phone, u.first_name, u.last_name, u.email, MAX(us.created_at) as created_at, u.updated_at FROM users_friends uf
LEFT JOIN users u ON u.id = uf.friend_id
LEFT JOIN users_streams us ON u.id = us.user_id
WHERE uf.user_id = 1 AND uf.status != "BLOCKED" AND us.status = "ACTIVE" AND CONVERT_TZ(us.created_at, "America/Los_Angeles", "America/Los_Angeles") >= DATE_ADD(CONVERT_TZ(CURDATE(), "America/Los_Angeles", "America/Los_Angeles"), INTERVAL -0 DAY) AND uf.user_id = 1
GROUP BY u.id ORDER BY us.created_at DESC
正如你所看到的,我正在将我的创作日期从洛杉矶(服务器时间)转换为洛杉矶......这完美无缺。当其他国家进来时......例如亚洲/上海,我注意到它仍在拉动数据。我相信它,因为我需要整理到最近的一天?
我的问题是,当我尝试运行相同的查询但执行CONVERT_TZ(us.created_at, "America/Los_Angeles", "Asia/Shanghai")
时,我仍然可以获得前一天的结果。
无论我转换到什么时区,我怎样才能做到这一点,它只会从当天开始提取数据,并在新的一天开始后(12:00 AM)忽略任何数据。