如何将sql时间戳作为列名?

Kim*_*Kim 5 mysql sql

例如:

select count(*) as (select date_sub(curdate(),interval 4 day)) 
from userinfo 
where createTime > (select date_sub(curdate(),interval 4 day));
Run Code Online (Sandbox Code Playgroud)

这不起作用.它说'as'之后的语法不正确.我该如何工作?

我希望结果是这样的:

| |2016-01-14|
|-|----------|
|1|   1000   |
Run Code Online (Sandbox Code Playgroud)

Luk*_*zda 4

使用普通的静态查询,你不能将列名定义为变量/子查询,但你可以使用动态 SQL(准备好的语句)来实现它:

\n\n
SET @sql =\n    CONCAT(\'select count(*) as `\',(select date_sub(curdate(),interval 4 day)),\'` from userinfo where createTime > (select date_sub(curdate(),interval 4 day));\');\n\nPREPARE stmt FROM @sql;\nEXECUTE stmt;\nDEALLOCATE PREPARE stmt;\n
Run Code Online (Sandbox Code Playgroud)\n\n

SqlFiddleDemo

\n\n

输出:

\n\n
\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x97\n\xe2\x95\x91 2016-01-14 \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91          2 \xe2\x95\x91\n\xe2\x95\x9a\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x9d\n
Run Code Online (Sandbox Code Playgroud)\n