按照置顶的贴子中的要求重述一遍问题:
环境:oracle,weblogic
问题:要保存页面上的内容为date型,而这个date型必须精确到时分.
直接update ... to_date('2003-08-05 11:30','YYYY-MM-DD HH24:MI')可以,但现在由于某种原因,必须使用PreparedStatement准备sql,再设置各个字段值.
请问我这种情况,如何操作?PreparedStatement.setDate() or setTime() or another way?
谢谢
环境:oracle,weblogic
问题:要保存页面上的内容为date型,而这个date型必须精确到时分.
直接update ... to_date('2003-08-05 11:30','YYYY-MM-DD HH24:MI')可以,但现在由于某种原因,必须使用PreparedStatement准备sql,再设置各个字段值.
请问我这种情况,如何操作?PreparedStatement.setDate() or setTime() or another way?
谢谢
String currDateAndTime = dateAndTimeFormat.format(new java.util.Date());
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString("dateString", 字符形式的时间);
pstmt.execute()
String currDateAndTime = dateAndTimeFormat.format(new java.util.Date());
genphone_ru(哎,什么都要学,真累) :日期字符串格式化不是难事,只是不知道如何保存到oracle中.
ashes(灰尘) :PreparedStatement中各字段值是先以?初始化的,然后再用setXxx之类设置实际值,因为是在做公用类.
zhousm6([email protected]) :这三个都试了,都失败了,郁闷ing...
java.sql.SQLException: ORA-01858: 在要求输入数字处找到非数字字符
比如是:setTimeFormat("yyyy-MM-dd hh24:mm");
那SQL语句就是:
String sql = "setTimeFormat(\"yyyy-MM-dd hh24:mm\");";
sql += "update .......;";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setTimestamp(1, java.sql.Timestamp.valueOf("2003-08-05 11:30" + ":00"));
相关命令应该是SET DATESTYLE,但好像没用。
其实问题归结赶来是这样的:
PreparedStatement怎么设置datetime型(从字面上看,只有setDate()和setTime())
---------------------------------------------------------------------
StringBuffer sql = new StringBuffer("declare @max_mid integer;declare @max_mserialno integer;");
sql.append("set @max_mid=(select max(M_ID)+1 from S_T_Menu);");
sql.append("set @max_mserialno = (select max(M_SerialNO)+1 from S_T_Menu where M_ParentMenuID="+M_ParentMenuID+");");
sql.append("if(@max_mserialno is null) set @max_mserialno=1;");
sql.append("insert into S_T_Menu(M_ID,M_isSubMenu,M_ParentMenuID,M_CNName,M_EnName,M_URL,M_TargetFrameName,M_SerialNO)");
sql.append("values(@max_mid,1,?,?,?,?,?,@max_mserialno);"); PreparedStatement pstmt = pdb.getPrepareStatement(sql.toString()); pstmt.setString(1,M_ParentMenuID);
pstmt.setString(2,M_CNName);
pstmt.setString(3,M_EnName);
pstmt.setString(4,M_URL);
pstmt.setString(5,M_TargetFrameName);
pstmt.execute();
//以上在SQL Server 2000下有效。
---------------------------------------------------------------------
我想说的就是:
不用PreparedStatement的时间格式设置,而是直接采用Oracle的时间格式设置;
pstmt.execute()可以执行多句sql语句.
Timestamp 精确到秒
再次谢谢大家!结贴!