Java 迄今为止的字符串
Java String to Date
我有一个需要以下输入参数的存储过程 -
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
与 导入 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
有人可以帮我吗?
您可以尝试在您的代码中实现如下内容:
String string = "January 2, 2010";
DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
Date date = format.parse(string);
System.out.println(date);
Date 将解析您输入的字符串,然后它会给您正确的日期希望这对您有所帮助:)
您输入错误 Date
。请注意,您已经导入了对应于转换 (Date)
的 java.sql.Date
,将导入更改为 java.util.Date
,它应该可以工作。
SimpleDateFormat.parse()
returns java.util.Date
的一个实例,它与 java.sql.Date
不同 并且您不能从一个转换为其他。如果您确实需要 java.sql.Date
.
,可以
您可以使用 java.sql.Date
的构造函数将 java.util.Date
转换为 java.sql.Date
:
Date(long date) //constructor of the java.sql.Date
Constructs a Date object using the given milliseconds
time value.
获取开始日期:
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
class 而不是 java.util.Date
.
您可以将 (java.util.Date)Date obj 传递给 java.sql.Date 构造函数
java.util.Date startDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(startDate.getTime());
我有一个需要以下输入参数的存储过程 -
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
与 导入 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
有人可以帮我吗?
您可以尝试在您的代码中实现如下内容:
String string = "January 2, 2010";
DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
Date date = format.parse(string);
System.out.println(date);
Date 将解析您输入的字符串,然后它会给您正确的日期希望这对您有所帮助:)
您输入错误 Date
。请注意,您已经导入了对应于转换 (Date)
的 java.sql.Date
,将导入更改为 java.util.Date
,它应该可以工作。
SimpleDateFormat.parse()
returns java.util.Date
的一个实例,它与 java.sql.Date
不同 并且您不能从一个转换为其他。如果您确实需要 java.sql.Date
.
您可以使用 java.sql.Date
的构造函数将 java.util.Date
转换为 java.sql.Date
:
Date(long date) //constructor of the java.sql.Date
Constructs a Date object using the given milliseconds time value.
获取开始日期:
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
class 而不是 java.util.Date
.
您可以将 (java.util.Date)Date obj 传递给 java.sql.Date 构造函数
java.util.Date startDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(startDate.getTime());