2012-08-26 315 views
1

我想通过给出两个日期来在我的java程序中执行我的MSSQL存储过程,在这两个日期之间进行选择。因此,在Java代码中我继续这样的:将nvarchar转换为datetime时出错

"EXEC [dbo].[MyProcedure] " + "'"+ dateFrom+"'" ,"'"+dateTo"'" 

我宣布我像这样的SQL服务器程序参数:@collected_date1 datetime, @collected_date2 datetime。 我选择了两个日期是这样的:

SELECT @date1 = Convert(varchar(23),@collected_date1,121) 
SELECT @date2= Convert(varchar(23),@collected_date2, 121) 

不过,我有这样的错误消息:Error converting data type nvarchar to datetime

你能帮助我吗? 谢谢

+0

“dateFro m'和'dateTo'在EXEC语句中看起来像一次?我假设它们是表示日期的字符串,但是这些日期的格式是什么?也许引擎无法使用当前的区域设置和/或日期格式转换它们。 –

回答

2

对上述说法,你声明的变量

@ collected_date1日期时间, @ collected_date2日期时间

,当你设置你转换数据类型为varchar所以它给你错误

如果你想设置你应该使用的日期时间数据类型

SELECT @date2= Convert(datetime,@collected_date2, 121) ; 
+0

谢谢你,现在回答你的问题,但是我遇到了另一个问题:“从字符串转换日期和/或时间时转换失败”。我给我的日期参数这种格式“yyyy-mm-dd”。任何想法纠正这个请。非常感谢 – Abdousoft

+0

转换(DATETIME,CONVERT(VARCHAR(2),@Month)+'/'+ CONVERT(VARCHAR(2),@Day) +'/'+ CONVERT(VARCHAR(4),@Year) )' –

+0

这是另一个'SELECT convert(datetime,@ collected_date2 + '00:00:00',120) - yyyy-mm-dd hh:mm:ss(24h)' –

相关问题