mysql - 使用 mysql CONVERT_TZ 仅包含时间,而不包含日期

标签 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()。

有什么好的替代方案吗?

最佳答案

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

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

关于mysql - 使用 mysql CONVERT_TZ 仅包含时间,而不包含日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31685974/

相关文章:

mysql - 在同一 Windows 服务器上运行 MSSQL 和 MySQL 的技术注意事项是什么?

mysql - 如何建模具有传递依赖的关联?

mysql - 用户 'reputation system' - 检查用户是否已经 +1 -1 某人?

c# - "Consider adding a reference to assembly System.Data"

mysql - GWT 和 tomcat 开发

mysql - 检查 SQL 中的“交易起始日期”和“交易截止日期”之间的“搜索起始日期”和“搜索截止日期”

php - MySQLi bind_param() 不工作

MySQL:什么是键缓冲区

MySQL-如何升级所有客户端程序以使用4.1.1

php - 使用 zend 框架的多语言内容管理网站 (CMS)