我需要使用以下语句获取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函数?
附言我无法使用PHP生成此查询,也不想在其上使用CASE语句。
最佳答案
您需要使用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。
关于mysql - 来自另一个表的MySQL DATE_ADD()期间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21087255/