PHP MYSQL基于日期月

时间:2015-12-11 18:06:24

标签: php mysql

我甚至不知道如何提出这个问题...

因此,有一个数据库,其中列是一年中的几个月:

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语句以选择二月。

我甚至不确定这是否可行。我只想知道是否有人知道是否有办法做到这一点。

3 个答案:

答案 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;