![](/img/trans.png)
[英]How to convert nvarchar datetime into datetime in SQL sever 2008?
[英]how to convert nvarchar(50) to datetime in sqlserver 2008
嗨,我在SqlServer 2008中编写了此查询,但是出了点问题
select * from News_Table
where (DATEDIFF( DAY ,convert(datetime, NewsDate) , convert(datetime,@Todaydate )) <= @Count)
@NewsDate
和@Todaydate
是两个这样保存的nvarchar参数2014/11/16
运行此查询给我一个错误:
Conversion failed when converting date and/or time from character string
尝试将正确的样式参数添加到您的convert函数中(请参见MSDN: link )
即CONVERT(DATETIME, NewsDate, 111)
(111是YYYY / MM / DD的样式)
然后您得到:
SELECT *
FROM News_Table
WHERE (DATEDIFF( DAY ,
CONVERT(DATETIME, NewsDate, 111) ,
CONVERT(DATETIME,@Todaydate, 111)
) <= @Count)
要了解更多, 请点击这里
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)
select * from News_Table
where (DATEDIFF( DAY ,convert(datetime, @NewsDate, 111) , convert(datetime,@Todaydate, 111 )) <= @Count)
这样尝试
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()
函数呢?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.