在mysql ADDDATE中将INTERVAL设置为变量

时间:2013-08-02 15:18:51

标签: mysql

我在mysql中有这一行:

SELECT <columns>
FROM table
WHERE TIME_TO_SEC(TIMEDIFF(NOW(), ADDDATE(DATE_OF_REG, INTERVAL 1 HOUR))) / 3600 >= 24

我还有一个TIMEZONE列,它将服务器的时差存储为数字。 如何在ADDDATE函数中以某种方式添加此数字? 例如。 ADDDATE(DATE_OF_REG,INTERVAL,TIMEZONE)或其他......

3 个答案:

答案 0 :(得分:0)

SET @interval_count = YourTimezoneColumn;
SELECT <columns>
FROM table
WHERE TIME_TO_SEC(TIMEDIFF(NOW(), DATEDIFF(DATE_OF_REG, INTERVAL @interval_count HOUR)) / 3600 >= 24

答案 1 :(得分:0)

您可以使用TIMESTAMPADD函数执行此操作。

而不是:ADDDATE(DATE_OF_REG, INTERVAL 1 HOUR)

写下:TIMESTAMPADD(HOUR, TIMEZONE, DATE_OF_REG)

答案 2 :(得分:0)

我今天没有MySQL,但根据docs,区间数可以是表达式。看看是否有效:

ADDDATE(DATE_OF_REG, INTERVAL myTimeStamp HOUR)

如果这不起作用,试试这个,这或多或少是如何在Oracle中完成的:

ADDDATE(DATE_OF_REG, myTimeStamp * INTERVAL 1 HOUR)