首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在H2数据库中未找到函数"TO_DATE“

在H2数据库中未找到函数"TO_DATE“
EN

Stack Overflow用户
提问于 2014-02-04 12:45:59
回答 4查看 22.8K关注 0票数 7

我有一个SQL语句,并尝试在Java中与H2内存数据库一起执行。引发了以下异常。

SQL:

代码语言:javascript
复制
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()值。

代码语言:javascript
复制
Exception:
Caused by: org.h2.jdbc.JdbcSQLException: Function "TO_DATE" not found; SQL statement:
EN

回答 4

Stack Overflow用户

发布于 2018-12-20 03:40:56

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

代码语言:javascript
复制
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()

票数 4
EN

Stack Overflow用户

发布于 2016-03-25 22:23:56

从H2中的日期-时间字段中删除时间部分的一种方法是将字段格式化为字符串,然后进行解析。这对我很有效。

参数(格式(field_name,'yyyy-MM-dd'),'yyyy-MM-dd')

H2的解析和格式化日期函数遵循java.text.SimpleDataFormat语义。

是的,它不是超级优化的。这可以满足我们的需求,因为我们只将H2用于单元测试。

票数 3
EN

Stack Overflow用户

发布于 2014-02-04 13:04:42

H2数据库没有TO_CHAR()函数。但是H2数据库有sysdate,dual,varchar2,这使得编写可以在H2数据库上运行的oracle查询变得非常容易。因此,您可以编写一个函数,该函数将H2数据库函数别名,使其以格式处理日期/时间戳。可以在H2数据库中使用TO_CHAR(sysdate, 'DD/MM/YYYY HH24:MI:SS')

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21544114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档