为了使我们的代码更加标准,我们被要求将我们硬编码 SQL 变量的所有位置更改为准备好的语句,并改为绑定变量。
但是,我面临 setDate()
的问题。
这是代码:
DateFormat dateFormatYMD = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
DateFormat dateFormatMDY = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date now = new Date();
String vDateYMD = dateFormatYMD.format(now);
String vDateMDY = dateFormatMDY.format(now);
String vDateMDYSQL = vDateMDY ;
java.sql.Date date = new java.sql.Date(0000-00-00);
requestSQL = "INSERT INTO CREDIT_REQ_TITLE_ORDER (REQUEST_ID," +
" ORDER_DT, FOLLOWUP_DT) " + "values(?,?,?,)";
prs = conn.prepareStatement(requestSQL);
prs.setInt(1,new Integer(requestID));
prs.setDate(2,date.valueOf(vDateMDYSQL));
prs.setDate(3,date.valueOf(sqlFollowupDT));
执行 SQL 时出现此错误:
java.lang.IllegalArgumentException
at java.sql.Date.valueOf(Date.java:138)
at com.cmsi.eValuate.TAF.TAFModuleMain.CallTAF(TAFModuleMain.java:1211)
我应该使用 setString()
代替 to_date()
吗?
原文由 roymustang86 发布,翻译遵循 CC BY-SA 4.0 许可协议
❐ 使用
java.sql.Date
如果您的表格有一列类型为
DATE
:java.lang.String
方法
java.sql.Date.valueOf(java.lang.String)
接收到表示日期的字符串,格式为yyyy-[m]m-[d]d
。例如:java.util.Date
假设您有一个
endDate
类型为java.util.Date
的变量,您可以这样进行转换:如果要插入当前日期:
❐ 使用
java.sql.Timestamp
如果您的表有一列类型为
TIMESTAMP
或DATETIME
:java.lang.String
方法
java.sql.Timestamp.valueOf(java.lang.String)
接收到表示日期的字符串,格式为yyyy-[m]m-[d]d hh:mm:ss[.f...]
。例如:java.util.Date
假设您有一个
endDate
类型为java.util.Date
的变量,您可以这样进行转换:如果您需要当前时间戳: