是否可以将 Oracle 的 sysdate 与 jdbcTemplate 一起使用

Is it possible to use Oracle's sysdate with jdbcTemplate

到目前为止我试过了

jdbcTemplate.update("INSERT INTO INFO (id, my_date) 
"VALUES(?, ?)", 1, "sysdate");

还通过仅使用地图尝试了 namedParameterJdbcTemplate。

Map namedParameters = new HashMap();
namedParameters.put("id", 1);
namedParameters.put("my_date", "sysdate");

namedParameterJdbcTemplate.update("INSERT INTO INFO (id, my_date) 
    "VALUES(:id, :my_date)",namedParameters);

尝试以上所有方法后,异常如下

org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [INSERT INTO INFO (id, my_date) 
"VALUES(?, ?)]; ORA-01858: a non-numeric character was found where a numeric was expected
; nested exception is java.sql.SQLDataException: ORA-01858: a non-numeric character was found where a numeric was expected

    at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:82) ~[spring-jdbc-4.3.17.RELEASE.jar:4.3.17.RELEASE]
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73) ~[spring-jdbc-4.3.17.RELEASE.jar:4.3.17.RELEASE]
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:82) ~[spring-jdbc-4.3.17.RELEASE.jar:4.3.17.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:655) ~[spring-jdbc-4.3.17.RELEASE.jar:4.3.17.RELEASE]

找到这个 link,他们声称这是可能的。我不知道怎么做,除非我做错了什么。有什么建议吗? http://forum.spring.io/forum/spring-projects/data/99020-is-it-possible-to-use-oracle-s-sysdate-with-simplejdbcinsert

作为替代方案,您可以使用 Java 中可用的当前时间戳:

Timestamp sysdate = new Timestamp(System.currentTimeMillis());
Map namedParameters = new HashMap();
namedParameters.put("id", 1);
namedParameters.put("my_date", sysdate);

您的 Java 代码不知道 sysdate 是什么,它是 Oracle 数据库中的特定变量。与蒂姆的回答类似,我会在您的代码中指定一个 java 变量,尽管格式与您的第二次尝试类似:

Map<String, Object> namedParameters = new HashMap<String, Object>();
namedParameters.put("id", 1);
namedParameters.put("my_date", new Date());//java.util.Date

jdbcTemplate.update("INSERT INTO info (id, my_date) VALUES (:id, :my_date)", namedParameters);