我甚至不知道如何提出这个问题...
因此,有一个数据库,其中列是一年中的几个月:
January | February | March
然后每列都有它的值:
jan1 | feb1 | mar1
jan2 | feb 2 | mar2
jan3 | feb3 | mar3
抱歉,我不知道如何在Stack Overflow中插入表格。
所以当我运行查询时,我想知道mysql是否有办法自动识别当前月份,并使用它来选择相应的列。
因此,如果当前月份是1月,那么SELECT将如下所示:
$select = "SELECT UID, JANUARY FROM table WHERE UID = '1'";
这将带回1月份的UID = 1的列数据。
但是当它是二月时,查询需要自动调整SELECT语句以选择二月。
我甚至不确定这是否可行。我只想知道是否有人知道是否有办法做到这一点。
答案 0 :(得分:4)
使用PHP内置的date()函数,指定here。
date("F") // returns full string representation of current month like "January"
代码看起来像这样:
$select = "SELECT UID, ".date("F")." FROM table WHERE UID = '1'";
答案 1 :(得分:2)
如果您需要纯SQL解决方案,请执行以下操作:
select uid,
case month(curdate())
when 1 then january
when 2 then february
when 3 then march
when 4 then april
when 5 then may
when 6 then june
when 7 then july
when 8 then august
when 9 then september
when 10 then october
when 11 then november
when 12 then december
end as month_data
from mytable
where uid = '1';
这是fiddle。
答案 2 :(得分:2)
MySQL没有类似于eval()的功能,所以你必须包含一些长代码,比如@ trincot的答案。但如果您不介意使用prepared statement,可以更清晰地完成(恕我直言):
set @s = CONCAT('SELECT ', MONTHNAME(NOW()), ' FROM meses');
PREPARE stmt FROM @s;
EXECUTE stmt;