使用mysql dayname作为列名

时间:2013-08-15 16:14:56

标签: mysql sql

是否可以将dayname输出用作列名

目前我正在使用此

SELECT *,
LEFT(thu,5) as open1
FROM ...
WHERE ...

但是我想用动态当前日期(3个字母)替换thu字符串,并仍然将其用作列名。

1 个答案:

答案 0 :(得分:0)

简短的回答是否定的,不能做到。 SQL语句中的列引用(如所有标识符)都是静态的。标识符不能替换为在运行时确定的表达式。


更长的答案是,你需要动态生成语句,或根据条件选择一组可能的语句来执行。

第三种方法可以通过引用您想要选择的所有可能的列名称,并根据星期几的条件使该列的返回条件为您提供所需的内容。

这样的事情可以达到同样的结果:

SELECT LEFT(CASE DAYNAME(NOW())
            WHEN 'Sunday'    THEN t.sun
            WHEN 'Monday'    THEN t.mon
            WHEN 'Tuesday'   THEN t.tue
            WHEN 'Wednesday' THEN t.wed
            WHEN 'Thursday'  THEN t.thu
            WHEN 'Friday'    THEN t.fri
            WHEN 'Saturday'  THEN t.sat
            END,5) AS open1
  FROM t

(为了避免因星期几名称的不同设置出现问题,根据语言/地区,我宁愿使用DAYOFWEEK功能。而且我更有可能重复{{ 1}}函数,即使它被重复,它似乎更容易阅读:

LEFT