JDBC中在Oracle数据库中获取当前数据生成的时间
try {--------------------编程问答-------------------- 没看明白你的错误到底在什么地方!! --------------------编程问答-------------------- sysdate不对的话,可以用CURRENT_TIMESTAMP试试看 --------------------编程问答-------------------- 为什么不从程序获取当前时间?
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@stardust:1521:ORCL", "scott", "abc123");
sql = "insert into nk(LOCAL,DESTINATION,PRICE,TIME) values(?,?,?,to_char(sysdate,'yyyy-MM-dd HH24:mm:ss'))";
pstmt = conn.prepareStatement(sql); /////这里生成的时间不对///
pstmt.setString(1, LOCAL);
pstmt.setString(2, DESTINATION);
pstmt.setInt(3, PRICE);
pstmt.executeUpdate();
}
sql = "insert into nk(LOCAL,DESTINATION,PRICE,TIME) values(?,?,?,to_char(sysdate,'yyyy-MM-dd HH24:mm:ss'))";没用过这种写法 --------------------编程问答-------------------- SimpleDateFormat sdf = new SimpleDateFormat("dd-M月-yyyy");
String createDate = sdf.format(new Date());
String sql = "insert into news values (SEQ_NID.NEXTVAL, ?,?,?,?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(4, createDate);
这是我刚刚学来的、 --------------------编程问答-------------------- 用以下代码:
--------------------编程问答-------------------- 是只有分钟不对吗?
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Connection conn = null;
PreparedStatement pstmt = null;
String sql;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@stardust:1521:ORCL", "scott", "abc123");
sql = "insert into nk(LOCAL,DESTINATION,PRICE,TIME) values(?,?,?,?))";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, LOCAL);
pstmt.setString(2, DESTINATION);
pstmt.setInt(3, PRICE);
pstmt.setString(4, sdf.format(TIME)); // 把date转换成特定格式的字符串
pstmt.executeUpdate();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
oracle中格式化分钟的是mi,不是mm
select to_char(sysdate,'yyyy-MM-dd hh24:mi:ss') from dual; --------------------编程问答-------------------- 不好意思,上面代码漏了点,加上下面的代码
--------------------编程问答-------------------- ORACLE与JAVA的格式不一样
Date Time = new Date();
YYYY-MM-DD HH12:MI:SS --------------------编程问答-------------------- Java code try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@stardust:1521:ORCL", "scott", "abc123");
sql = "insert into nk(LOCAL,DESTINATION,PRICE,TIME) values(?,?,?,to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'))";
pstmt = conn.prepareStatement(sql); /////这里生成的时间不对///
pstmt.setString(1, LOCAL);
pstmt.setString(2, DESTINATION);
pstmt.setInt(3, PRICE);
pstmt.executeUpdate();
}
--------------------编程问答-------------------- 又仔细看了下你的代码,只要改一个地方就行了,代码如下:
sql = "insert into nk(LOCAL,DESTINATION,PRICE,TIME) values(?,?,?,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'))";
数据库时间格式化是yyyy-mm-dd hh24:mi:ss,跟Java中的yyyy-MM-dd HH:mm:ss是不一样的,数据库是不认Java中的时间格式的。 --------------------编程问答-------------------- --------------------编程问答-------------------- 取得是服务器时间。
补充:Java , Eclipse