2016-05-18 9 views
4

私はデータベースとしてMySQLを、テストのためにH2を使用しています。私はplayframework 2.3.xとScalaも使用していますが、質問の目的には関係ありません。MySQLのH2のDATE_SUBとDATE_ADD

H2は、クエリで私が使用しているいくつかの機能と競合

SELECT * 
FROM subscriptions 
WHERE active_until >= (DATE_SUB(CURDATE(), INTERVAL 3 DAY)) 
AND active_until <= (DATE_ADD(CURDATE(), INTERVAL 1 DAY)) 
AND status = "ACTIVE" 

を持っている問題を引き起こす機能がDATE_SUBとDATE_ADDです。

私はこの仕事をしたり、mysqlのためにそれを壊すことなくクエリを変更するための回避策がありますか?

+1

私はSQLの2つのフレーバーの違いがあまりにも面倒なので、テスト用にH2を使用しようとしたことをあきらめました。 –

+0

@ m-zご意見ありがとうございます。 – agusgambina

答えて

6

最後に私はそれを解決できました。私はTIMESTAMPADDDATE_ADDTIMESTAMPDIFFDATE_SUBを変更しなければならなかった。その後CURDATE()CURRENT_DATEに変更しました。メソッドの符号も変わりますが、H2とMyの両方で動作します。

SELECT * 
FROM subscriptions 
WHERE active_until >= (TIMESTAMPDIFF(DAY, 3, CURRENT_DATE)) 
AND active_until <= (TIMESTAMPADD(DAY, 1, CURRENT_DATE)) 
AND status LIKE 'ACTIVE' 
+0

それは動作します。ありがとうございました! – NCrash

関連する問題