我试图找出动态查询以在过去20天内获取日期列。这个想法很简单,而且,我知道该表确实包含从GETDATE时间()-20天,但还是没有结果得到返回T-SQL - 通过动态参数获取日期
DECLARE @date_past_period varchar(MAX);
DECLARE @date_past_number varchar(MAX);
SET @date_past_period='day';
SET @date_past_number='20';
DECLARE @aDate datetime;
DECLARE @sql varchar(MAX);
SET @sql='SELECT date FROM table WHERE convert(varchar,date,121) BETWEEN convert(varchar,getdate(),121) AND convert(varchar,dateadd('[email protected]_past_period+', -'[email protected]_past_number+', getdate()),121)';
exec(@sql);
也许问题出在动态的东西,但我不知道。
任何有用的注释表示赞赏
不确定为什么你不使用存储过程并绕过'exec'。 – JonH
这是一个测试片段。而数据库日期列包含保存的值格式,如“02 Oct 2008 11:02:07:577”传入参数预计采用不同的格式,如“yyyy-mm-dd hh:mm:ss.mmm”,所以我试图使这种方式的通用格式。当然,我不确定这是一个最佳方式,所以如果你可以建议一个更好的,请这样做:) – user592704
SQL Server 2008?还是更早? – gbn