动态日期作为SQL Server中的列名称

时间:2017-04-24 07:52:41

标签: sql sql-server

在我的select语句中,我想调用我的一个列作为动态日期。

例如:

SELECT <column_name> as CONVERT(DATE, GETDATE() - 1)
FROM <table_name>

这显然不起作用。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

为什么不存储固定列名为“DATE”的数据?并使用简单的WHERE date = CONVERT(DATE,GETDATE() - 1)?

答案 1 :(得分:0)

检查动态查询,如下所示

declare  @ssql nvarchar(500)
set @ssql= N'Select Getdate() as ['+ Cast(CONVERT(DATE, GETDATE() - 1) as nvarchar(25))+'] ;'
exec sp_executesql @ssql

您可以使用列和表名更改选择

 declare  @ssql nvarchar(500)
 set @ssql= N'Select <colName> as ['+  Cast(CONVERT(DATE, GETDATE() - 1) as nvarchar(25))+'] from tableName ;'  
exec sp_executesql @ssql

有关其他列:

declare  @ssql nvarchar(500)
 set @ssql= N'Select <colName> as ['+  Cast(CONVERT(DATE, GETDATE() - 1) as nvarchar(25))+'],<colName2> as ['+  Cast(CONVERT(DATE, GETDATE() - 2) as nvarchar(25))+']
 ,<colName3> as ['+  Cast(CONVERT(DATE, GETDATE() - 3) as nvarchar(25))+'] from tableName ;'  
exec sp_executesql @ssql