迄今为止的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参数