0

次の SQL を HQL に変換しようとしています。

SELECT DISTINCT a.aid from atable a, btable b 
where a.aid=b.id and 
STR_TO_DATE(a.somecolumn, '%Y-%m-%d') BETWEEN CURDATE() - INTERVAL 10 DAY AND CURDATE();

つまり、テーブルの列の 1 つに日付が文字列として格納されています。特定の範囲のレコードを取得するために HQL で同じものを使用したい。

これは単一の HQL を使用して実行できますか?

4

2 に答える 2

1

DATEDIFF関数を使用して動作しました-

SELECT DISTINCT a.aid from atable a, btable b 
where a.aid=b.id and DATEDIFF(current_date(), a.somecolumn) < 10

a.somecolumnの日付は、 yyyy-MM-ddの形式で格納されますが、文字列として格納されます(a.somecolumn の型は varchar です)。デフォルトで DATEDIFF 関数でサポートされている他の形式を確認する必要がある場合があります。

于 2013-04-16T02:41:15.070 に答える