我有一个存储过程,需要以下输入参数-

PROCEDURE `Report_Publishing`(p_StartDate datetime, p_EndDate dateTime, p_Action varchar(15))



从前端我以以下格式获取开始日期和结束日期-
start as a String "2017-03-15"end as a String "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();


我收到以下异常-

Exception in thread "main" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date


修改-
替换-
1. import java.sql.Date带有import java.util.Date;

2。

cs.setDate(1,startDate);
cs.setDate(2,endDate);


通过

cs.setDate(1,(java.sql.Date) startDate);
cs.setDate(2,(java.sql.Date) endDate);


现在我得到-

Exception in thread "main" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date


有人可以帮我吗?

最佳答案

您可以使用java.util.Date的构造函数将java.sql.Date转换为java.sql.Date


  Date(long date)//java.sql.Date的构造方法
  
  使用给定的毫秒构造一个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());


注意-将来,如果要使用仅日期的值,则应使用LocalDate类而不是java.util.Date

关于java - 迄今为止的Java字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43376847/

10-10 13:54
查看更多