2016-01-18 11 views
5

カラム名としてsqlタイムスタンプを作成するにはどうすればよいですか?例えば

select count(*) as (select date_sub(curdate(),interval 4 day)) 
from userinfo 
where createTime > (select date_sub(curdate(),interval 4 day)); 

これが機能していません。それは、 '後'の構文が正しくないと言います。どのように私はこの作品を作るのですか?

私は結果は次のようになりたい:あなたは、変数/サブクエリとして列名を定義することはできませんが、あなたは、動的SQL(prepared statements)とそれを達成することができ、通常の静的なクエリで

| |2016-01-14| 
|-|----------| 
|1| 1000 | 
+0

'、COL1を選択し...、DATE_SUB(CURDATE()、インターバル4日))...から...' – jarlh

+1

いいえ、私は、DATE_SUB(CURDATE()したい間隔4日)を列名として使用し、新しい列としては作成しません。 – Kim

答えて

4

SET @sql = 
    CONCAT('select count(*) as `',(select date_sub(curdate(),interval 4 day)),'` from userinfo where createTime > (select date_sub(curdate(),interval 4 day));'); 

PREPARE stmt FROM @sql; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

SqlFiddleDemo

出力:

╔════════════╗ 
║ 2016-01-14 ║ 
╠════════════╣ 
║   2 ║ 
╚════════════╝ 
関連する問題