使用基于动态字段的DATE_SUB()

时间:2013-08-23 03:23:35

标签: mysql sql dynamic

如何使用动态创建的字段在DATE_SUB计算中使用?

我在下面有这个SQL:

SELECT *, 
        CASE 
            WHEN `currentDate` IS NULL 
            THEN 
                `lastDate`
            ELSE 
                `currentDate`
        END AS `useDate`, 
        CASE 
            WHEN `type` = 'weekly' 
                THEN DATE_SUB(`useDate`, INTERVAL 1 WEEK)
            END AS `nextDate`
    FROM `aTable`

这不起作用,因为错误'#1054 - '字段列表'中的未知列'useDate''

如果我使用Select *中的实际字段,查询工作正常,但不接受动态创建的字段。

在不必执行“大小写”查询的情况下,使用此方法的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您是否尝试在CASE内使用WHEN子句?

SELECT *, 
        CASE 
            WHEN `currentDate` IS NULL 
            THEN `lastDate`
            ELSE `currentDate`
        END AS `useDate`, 
        CASE 
            WHEN `type` = 'weekly' 
                THEN DATE_SUB(
                        CASE 
                            WHEN `currentDate` IS NULL 
                            THEN `lastDate`
                            ELSE `currentDate` 
                        END AS `useDate`
                    , INTERVAL 1 WEEK)
            END AS `nextDate`
    FROM `aTable`