0
我們的主數據庫是MySQL。試圖(和失敗)爲H2數據庫創建用戶函數
很少有查詢使用相當常見的DATE_SUB($date, INTERVAL $duration $type)
。
我們正在對H2數據庫運行我們的測試,並且缺少DATE_SUB()
函數會產生問題。
我們有一個創建用戶H2函數來複制MySQL行爲的想法 - 我有兩個單獨的嘗試,兩個實現都存在並分別映射。
org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement
...
DATE_SUB(?, INTERVAL 1[*] DAY)
expected "., (, [, ::, *, /, %, +, -, ||, ~, !~, NOT, LIKE, REGEXP, IS, IN, BETWEEN, AND, OR,), ,";
它看起來像H2甚至沒有嘗試使用我的用戶功能,但在試圖解析SQL語句失敗:
CREATE ALIAS IF NOT EXISTS DATE_SUB FOR "xxx.yyy.Zzz.dateSubtract";
public Zzz {
...
public static Date dateSubtract(Connection connection, String dateValue, String formula) {
return dateSubtractJava(dateValue, formula);
}
public static Date dateSubtract(Connection connection, String dateValue, String INTERVAL, String numberOfDateIntervals, String dateIntervalName) {
return dateSubtractJava(dateValue, INTERVAL, numberOfDateIntervals, dateIntervalName);
}
...
}
不幸的是我的嘗試與失敗。
有沒有人設法做到這樣的成功?
您是否從命令行測試函數?如果是這樣的話,你用那裏的'[*]'來測試它嗎?(或者解析器是否爲你添加了這個?) –
不幸的是,H2不支持區間數據類型,所以'INTERVAL 1 DAY'不被理解。 –
解析器添加了語法錯誤發生處的'[*]'。 –