使用sysdate作为参数插入数据库

时间:2015-03-05 06:37:25

标签: java oracle prepared-statement

我有一个prepareStatement,它将日期值插入到测试表中。 日期值可以是参数值或NULL。 现在,如果日期值为null,我想在数据库中插入sysdate。 我不想使用new java.util.Date().getTime(),因为我的电脑中的时间可能与数据库中的时间不同。

    PreparedStatement pstmt = null;
    boolean rs = false;
    String sql = "INSERT INTO test (ID, record_date values(?, ?)";

        pstmt = DBConnection.getConnection().prepareStatement(sql);
        pstmt.setString(1, para1);
        if (para2 != null)
           pstmt.setDate(2, para2);
        else
          pstmt.setDate(2, sysdate); // is that possible?

        rs = (pstmt.executeUpdate() > 0);

2 个答案:

答案 0 :(得分:3)

boolean rs = false;
String sql = "INSERT INTO test (ID, record_date) values(?, NVL(?, sysdate()))";
PreparedStatement pstmt = DBConnection.getConnection().prepareStatement(sql);
pstmt.setString(1, para1);
if (para2 == null)
    pstmt.setNull(2, Types.Date);
else
    pstmt.setDate(2, para2);
rs = (pstmt.executeUpdate() > 0);

答案 1 :(得分:2)

不,这是不可能的。如果你想使用你必须使用的数据库中的日期:

String sql = "INSERT INTO test (ID, record_date values(?, systdate())";