【发布时间】:2020-11-29 11:17:12
【问题描述】:
我正在做 jdbc 并使用日期参数调用一个过程,但我的数据库表日期格式是 dd-MMM-yy 格式,因此我将我的字符串日期转换为 dd-MMM-yy 格式,但我无法 setDate(1, sdt) 因为 sdt 必须是 java.sql.Date 类型并且 java.sql.Date 格式是 yyyy-MM-dd 因此我需要帮助
我的程序是这样定义的:
PROCEDURE pStoreData(d_sumDttm IN DATE, i_Retval out number);
短代码:
System.out.print("Enter report date:");
String sdate = scanner.nextLine();
final Date date = new Date();
final SimpleDateFormat format = new SimpleDateFormat();
format.applyPattern(dd-MMM-yy);
final String sysdt = format.format(date);
java.sql.Date sqldt = java.sql.Date.valueOf(sysdt);
callablestate = connection.prepareCall("{call Report.pStoreDate(?,?)}");
callablestate.setDate(1,sqldt);
callablestate.registerOutParameter(2,Types.REF_CURSOR);
callable.execute();
【问题讨论】:
-
如果您使用
java.sql.Date插入,则数据库的日期格式无关紧要,因此请忘记所有有关日期格式的内容并插入日期值。仅当您将日期值插入为String时,日期格式才重要,我强烈建议您不要这样做。 -
@Arhana 你有没有看过非常好的答案,表明你需要打电话给
setObject()以获得LocalDate,而不是setDate()? -
你试过什么?您没有在问题中添加任何代码来显示您尝试过的内容。但是,让我猜猜,你调用
LocalDate.parse("10-08-20")甚至该方法的文档 明确表示格式必须是"2020-10-08",所以它当然会失败。为什么你会期待其他情况? -
你快到了。
callablestatement.setObject(1,ld)应该这样做(除非有一些相关的事情你没有告诉我们)。
标签: java date stored-procedures jdbc date-formatting