2

mysql の datediff の構文が hsqldb の構文と異なるという問題があります。

mysql: datediff(date1,date2)
hsqldb: datediff(interval,date1,date2)

通常、休止状態の方言はこれらの問題を解決しますが、休止状態の datediff 制限を作成する方法を見つけることができないようです。SQLステートメントでdatediffのフォーマットを「ハードコーディング」する必要があるため、インメモリhsqlデータベースで単体テストを行うことができないため、これは本当に厄介です。

誰かがこの問題についてアドバイスを持っているなら、それは大歓迎です.

4

1 に答える 1

4

最も簡単な解決策は、独自のカスタム HSQLDB 方言を作成して、既存の HSQLDB 方言を拡張することです。次に、コンストラクターで、datediff(date1, date2) を処理する関数を登録して、datediff(interval, date1, date2) に変換します (interval が静的な値である場合)。このようなもの:

registerFunction( "datediff", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datediff(interval, ?1, ?2)" ) );
于 2011-01-06T12:44:46.423 に答える