【发布时间】:2016-05-23 12:37:38
【问题描述】:
我有 MSSQL 程序:
my_proc
我从 java 获取数据
String sql = "exec my_proc '2016-01-01','2016-01-20','2016-01-01'";
stmt = connection.prepareStatement(sql);
rs = stmt.executeQuery();
并获得所有数据!
但如果我使用
String msisdn, String startDate, String endDate
String sql = "exec my_proc ?,?,?";
stmt = connection.prepareStatement(sql);
stmt.setString(1, msisdn);
stmt.setString(2, startDate);
stmt.setString(3, endDate);
rs = stmt.executeQuery();
我得到错误:
com.microsoft.sqlserver.jdbc.SQLServerException: Error converting data type varchar to datetime.
在程序中我有变量:
@Startdtin datetime,
@Enddtin datetime,
@msisdnin varchar(18)
我试过用
stmt.setTimestamp(2, startDate); //startDate - convert to Timestamp
和
stmt.setDate(2, startDate); //startDate - convert to Date (sql and util)
没有帮助。如何将日期传递给PreparedStatementcorrectly`?
【问题讨论】:
-
这个
startDate是否属于String类型? -
这个问题比较正确。旧删除
-
startDate是什么? -
@Satya yes startDate 是字符串 wjth date 例如'2016-01-01'
标签: java prepared-statement mssql-jdbc