试试这样吧
SELECT * FROM News_Table WHERE (DATEDIFF(DAY,CAST(NewsDate AS Datetime),CAST(@Todaydate AS Datetime)) <= @Count)
您需要执行类似的操作才能将该字符串转换为DATETIME数据类型
DECLARE @Date NVARCHAR(20) = '2013/11/16' SELECT CAST((LEFT(@Date, 4) + SUBSTRING(@Date, 6 ,2) + RIGHT(@Date, 2)) AS DATETIME)
为您的查询
select * from News_Table where (DATEDIFF( DAY , CAST((LEFT(NewsDate, 4) + SUBSTRING(NewsDate, 6 ,2) + RIGHT(NewsDate, 2)) AS DATETIME) , CAST((LEFT(@Todaydate, 4) + SUBSTRING(@Todaydate, 6 ,2) + RIGHT(@Todaydate, 2)) AS DATETIME) ) <= @Count)
的 注意 强>
如果变量 @Todaydate 实际上存储今天的日期然后为什么不简单地使用 GETDATE() 功能。
@Todaydate
GETDATE()
了解更多 点击这里
SELECT convert(datetime, '2014/11/16', 111) as datetime
的 OP 强>
所以你的查询就是这样的
Select * from News_Table where (DATEDIFF( DAY ,convert(datetime, '2014/11/16', 111) , convert(datetime,@Todaydate,111 )) <= @Count)
使用 Convert(datetime, @yourvalue, 111)
Convert(datetime, @yourvalue, 111)
select * from News_Table where (DATEDIFF( DAY ,convert(datetime, @NewsDate, 111) , convert(datetime,@Todaydate, 111 )) <= @Count)
http://www.sqlusa.com/bestpractices/datetimeconversion/
尝试将正确的样式参数添加到转换函数中(请参阅MSDN: 链接 )
即 CONVERT(DATETIME, NewsDate, 111) (111是YYYY / MM / DD的样式)
CONVERT(DATETIME, NewsDate, 111)
然后你得到:
SELECT * FROM News_Table WHERE (DATEDIFF( DAY , CONVERT(DATETIME, NewsDate, 111) , CONVERT(DATETIME,@Todaydate, 111) ) <= @Count)