1

尝试从 microsoft access 向我的数据库中插入日期时出现此错误

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Undefined function 'to_date' in expression.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3148)
.....

这是我使用的准备好的声明

addUserSt = con.prepareStatement("insert into Accounts(Username, First_name, last_name, gender, birthday, email, civil_status, password) "
                 + "values(?,?,?,?,to_date('17-January-97', 'DD-Month-RR'),?,?,?)");

这是我执行语句的方式.. dc 是一个对象。uname、fname、lname 等变量都是字符串。

                dc.addUserSt.setString(1, uname);
                dc.addUserSt.setString(2, fname);
                dc.addUserSt.setString(3, lname);
                dc.addUserSt.setString(4, gender);
                dc.addUserSt.setString(5, email);
                dc.addUserSt.setString(6, civil);
                dc.addUserSt.setString(7, pass);

                dc.addUserSt.executeUpdate();

我不知道为什么它说 to_date 函数是未定义的。谁能帮我解决这个问题?提前致谢。

4

3 回答 3

2

您需要使用该CDate()功能。这是 to_date() 的 Microsoft Access 版本。

于 2012-11-21T13:41:17.137 回答
1

to_date 是一个 Oracle 函数。而是使用 CDate,即 Access 等效项。

于 2012-11-21T13:44:15.523 回答
0

该功能to_date是特定于 Oracle 的。由于您不是连接到 Oracle 而是连接到 Access,因此该功能不可用。不要使用特定于数据库的函数,而是考虑对日期和时间文字使用 JDBC 转义语法(如 JDBC 4.1 规范的 13.4.2 中所指定;每个 JDBC 驱动程序都应该支持这些)。对于以下日期:

{d 'yyyy-mm-dd'}

因此,在您的具体示例中,您可以使用:

values(?,?,?,?,{d '1997-01-17'},?,?,?)

使用转义是一种抽象数据库之间差异的方法。

于 2012-11-21T16:27:02.787 回答