迄今为止的Java字符串
我有一个需要以下输入参数的存储过程-迄今为止的Java字符串,java,string,datetime,callable-statement,Java,String,Datetime,Callable Statement,我有一个需要以下输入参数的存储过程- PROCEDURE `Report_Publishing`(p_StartDate datetime, p_EndDate dateTime, p_Action varchar(15)) 从前端,我得到以下格式的开始和结束日期- 以字符串“2017-03-15”开头以字符串“2017-04-17”结尾 下面是一段代码,用于将开始日期和结束日期转换为存储过程所需的格式- import java.sql.CallableStatement; import j
PROCEDURE `Report_Publishing`(p_StartDate datetime, p_EndDate dateTime, p_Action varchar(15))
从前端,我得到以下格式的开始和结束日期-
以字符串“2017-03-15”开头以字符串“2017-04-17”结尾
下面是一段代码,用于将开始日期和结束日期转换为存储过程所需的格式-
import java.sql.CallableStatement;
import java.sql.Connection;
import java.util.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import java.text.SimpleDateFormat;
public List<PublishReportDto> getExport(String start, String end, String action, Connection conn, String sql) {
List<PublishReportDto> publishList = null;
try {
CallableStatement cs = conn.prepareCall(sql);
start += " 00:00:00";
end += " 00:00:00";
Date startDate = null;
Date endDate = null;
try {
startDate = (Date) new SimpleDateFormat("yyyy-MM-dd").parse(start);
endDate = (Date) new SimpleDateFormat("yyyy-MM-dd").parse(end);
} catch (ParseException e) {
e.printStackTrace();
}
cs.setDate(1,(java.sql.Date) startDate);
cs.setDate(2,(java.sql.Date) endDate);
cs.setString(3, action);
cs.registerOutParameter(1, java.sql.Types.DATE);
cs.registerOutParameter(2, java.sql.Types.DATE);
cs.registerOutParameter(3, java.sql.Types.VARCHAR);
ResultSet rs = cs.executeQuery();
修改-
被替换-
1. import java.sql.Date
withimport java.util.Date强>
2.
借
现在我得到了-
Exception in thread "main" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
有人能帮我吗?您可以尝试在代码中实现如下内容:
String string = "January 2, 2010";
DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
Date date = format.parse(string);
System.out.println(date);
Date将解析您输入的字符串,然后它将为您提供正确的日期希望这有帮助:)您可以尝试在代码中实现如下内容:
String string = "January 2, 2010";
DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
Date date = format.parse(string);
System.out.println(date);
Date将解析您输入的字符串,然后它将为您提供正确的日期希望这有帮助:)您导入了错误的日期。请注意,您已经导入了与cast(日期)
对应的java.sql.Date
,将该导入更改为java.util.Date
,它应该可以工作
simpleDataFormat.parse()
返回java.util.Date
的实例,该实例不同于java.sql.Date
,并且不能从一个实例转换到另一个实例。如果您真的需要java.sql.Date
您输入了错误的日期,则可以修改。请注意,您已经导入了与cast(日期)
对应的java.sql.Date
,将该导入更改为java.util.Date
,它应该可以工作
simpleDataFormat.parse()
返回java.util.Date
的实例,该实例不同于java.sql.Date
,并且不能从一个实例转换到另一个实例。如果您确实需要java.sql.Date
可以使用java.sql.Date
的构造函数将java.util.Date
转换为java.sql.Date
:
日期(长日期)//java.sql.Date的构造函数
使用给定的毫秒构造日期对象
时间价值
要获取开始日期,请执行以下操作:
Date startDate = new java.sql.Date(new SimpleDateFormat("yyyy-MM-dd").parse(start).getTime());
要获取结束日期,请执行以下操作:
Date endDate = new java.sql.Date(new SimpleDateFormat("yyyy-MM-dd").parse(end).getTime());
注意-将来如果要使用仅日期值,则应使用类,而不是java.util.date
,您可以使用java.sql.date
的构造函数将java.util.date
转换为java.sql.date
:
日期(长日期)//java.sql.Date的构造函数
使用给定的毫秒构造日期对象
时间价值
要获取开始日期,请执行以下操作:
Date startDate = new java.sql.Date(new SimpleDateFormat("yyyy-MM-dd").parse(start).getTime());
要获取结束日期,请执行以下操作:
Date endDate = new java.sql.Date(new SimpleDateFormat("yyyy-MM-dd").parse(end).getTime());
注意-将来如果要使用仅日期值,则应使用类,而不是java.util.date
,您可以将(java.util.date)日期对象传递到java.sql.date构造函数中
java.util.Date startDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(startDate.getTime());
您可以将(java.util.Date)日期对象传递到java.sql.Date构造函数中
java.util.Date startDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(startDate.getTime());
这解决了异常,但现在我的开始日期包含->2017年3月15日星期三00:00:00 IST,此格式满足存储过程的输入格式吗?这解决了异常,但现在我的开始日期包含->2017年3月15日星期三00:00:00 IST,此格式满足存储过程的输入格式吗?您好,您的解决方案成功了,虽然现在我得到以下异常-java.sql.SQLException:参数1不是OUT参数您的解决方案有效,但现在我得到以下异常-java.sql.SQLException:参数1不是OUT参数