注入用户选择的时区进行查询

时间:2013-01-25 17:39:00

标签: mysql timezone

我已将服务器的时区设置为UTC。我的用户可以选择他们自己的时区,如UTC + 2等。我创建了一个查询来指示班次何时开启或关闭:

SELECT DAYNAME(NOW()), start_day
FROM Shifts
WHERE (start_day = LOWER(DAYNAME(NOW()))
       AND start_time < CURTIME()
       AND end_time > CURTIME())
   OR (start_day = LOWER(DAYNAME(DATE_SUB(NOW(), INTERVAL 1 DAY)))
       AND start_time < ADDTIME('24:00:00', CURTIME())
       AND end_time > ADDTIME('24:00:00', CURTIME()))

我想更改此查询,NOW()和CURTIME()以匹配每个用户的设置。我应该如何改变我的查询,在其中注入自定义UTC?还有另一种方法可以实现我的需要吗?

1 个答案:

答案 0 :(得分:0)

CONVERT_TZ功能将解决您的问题。

  • 语法

    CONVERT_TZ(dt,from_tz,to_tz)。

    “from_tz”是您的服务器时区(在您的情况下为UTC)。

    “to_tz”值可以作为字符串给出,表示偏离“from_tz”,例如“+10:00”或“-6:00” 。

  • 示例:

     SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','+2:00');
     SELECT CONVERT_TZ(NOW(), 'UTC', '-5:30');
     SELECT CONVERT_TZ(NOW(), '-2:00', '+5:00')