使用mysql CONVERT_TZ仅限时间,而不是日期

时间:2015-07-28 20:00:23

标签: mysql

我试图找到一种方法来查询“开放时间”表,允许每个位置的时区。如果它返回任何行,我知道它是开放的。

我存储了这个:

location_hours
int     loc_id        1
int     dow           1-7
time    open_time     09:00:00
time    close_time    18:00:00

locations
int     loc_id        1
varchar timezone      Europe/London

我最初预计会使用:

SELECT l.loc_id 
FROM lh.locations_hours 
INNER JOIN locations l ON lh.loc_id = l.loc_id 
WHERE dow=dayofweek(CONVERT_TZ(UTC_TIMESTAMP(),'UTC', l.timezone)) 
AND CONVERT_TZ(UTC_TIME(),'UTC', l.timezone) >= lh.open_time 
AND CONVERT_TZ(UTC_TIME(),'UTC', l.timezone) <= lh.close_time

然而,似乎mysql不支持在CONVERT_TZ中使用UTC_TIME()。

对此有什么好的选择?

1 个答案:

答案 0 :(得分:0)

这很有效。我不知道它是否非常有效,因为它感觉很笨重。

SELECT l.loc_id 
FROM lh.locations_hours
INNER JOIN locations l ON lh.loc_id = l.loc_id 
WHERE dow=dayofweek(CONVERT_TZ(UTC_TIMESTAMP(),'UTC', l.timezone)) 
AND BINARY SUBSTRING(CONVERT_TZ(UTC_TIMESTAMP(),'UTC', l.timezone), 12, 8) >= lh.open_time 
AND BINARY SUBSTRING(CONVERT_TZ(UTC_TIMESTAMP(),'UTC', l.timezone), 12, 8) <= lh.close_time