java - 在 H2 数据库中找不到函数 "TO_DATE"

标签 java sql h2 to-date

我有一个 SQL 语句并尝试使用 Java 中的 H2 内存数据库执行。抛出以下异常。

SQL:

SELECT ACCT_RULE_ID, ACCT_ACTION_ID 
  FROM ACCT_RULE 
 WHERE (ACCT_ACTION_ID = ?) 
   AND (START_DATETIME <= to_char(?, 'mm/dd/yyyy HH:MI:SS AM')) 
   AND (STOP_DATETIME > to_char(?, 'mm/dd/yyyy HH:MI:SS AM')) 

用 Id 替换第一个参数,用新的 Date() 值替换第二个和第三个参数。

Exception:
Caused by: org.h2.jdbc.JdbcSQLException: Function "TO_DATE" not found; SQL statement:

最佳答案

您应该能够创建自己的to_date 函数

drop ALIAS if exists TO_DATE; 
CREATE ALIAS TO_DATE as '
import java.text.*;
@CODE
java.util.Date toDate(String s, String dateFormat) throws Exception { 
  return new SimpleDateFormat(dateFormat).parse(s); 
} 
' 

当然你也可以根据 David Small 的回答使用 parsedatetime()

关于java - 在 H2 数据库中找不到函数 "TO_DATE",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21544114/

相关文章:

java - Eclipse插件: JS Editor with non-file IEditorInput

java - Spring Boot 应用程序中存在 JNDI 的原因是什么?

java - 如何打印出将发送到 oracle 的 sql 查询

java - 违反参照完整性约束 - 添加超过 2 条记录时失败

java - 用于集成测试的内存数据库架构创建失败

oracle - 为什么 Grails 使用 H2 而不是 Oracle?

java - 带有计数字段的 JPQL ManyToMany 查询

java - 按换行符分割字符串

c# - 如何使用 SQL 表数据填充字典

php - 如何将 mysql 数据库中的选定值与另一个表中的现有值进行比较?