MySQL DATE_ADD()从另一个表开始

时间:2014-01-13 09:03:51

标签: mysql date

我需要使用以下语句获取MySQL Server Date:

SELECT DATE_ADD(NOW(),INTERVAL 1 HOUR) - This Works as expected.

但是现在我需要在数据库中的另一个表中使用句点(SECOND,HOUR,WEEK等),所以我尝试了以下内容。

SELECT DATE_ADD(NOW(),INTERVAL 1 duration_table.period) FROM (SELECT 'HOUR' period) as duration_table;

但它不起作用。那么,有没有办法将句点作为字符串提供给DATE_ADD函数?

P.S。我无法使用PHP生成此查询,我不想在其上使用CASE语句。

1 个答案:

答案 0 :(得分:0)

您需要使用CASE表达式。

SELECT DATE_ADD(NOW(), CASE duration_table.period
                        WHEN 'HOUR' THEN INTERVAL 1 HOUR
                        WHEN 'SECOND' THEN INTERVAL 1 SECOND
                        WHEN 'WEEK' THEN INTERVAL 1 WEEK
                        ...
                       END)
FROM ...

如果你不想这样做,为什么不把持续时间表中的秒数而不是句点名称?

我能想到的唯一另一种选择是准备动态SQL。