いくつかの日付を正しいフォーマットでクエリに渡すのに問題があります。
列が DATETIME から DATE にキャストされるビューがあるため、時刻の部分を無視して、日付だけでグループ化できます。
CREATE VIEW test_view (date, code_id, dist_id, type, reg, a_code, a_stats, rec_stats) AS
SELECT CAST(sn.notif_date as DATE), code_id, di.codigo, di.type, ac.reg, ac.a_code, cd.check,
CASE WHEN cd.rec_val = 0 THEN 0 ELSE 1 END
FROM card AS cd, sel_notif AS sn, code_id AS ci, dist_id AS di, ar_code AS ac
WHERE ci.id = sn.id_code
AND cd.id_sel = sn.id
AND di.id = ci.id_dist
AND sn.sel_date >= DATEADD(DD, -90, GETDATE())
AND di.id = ac.id_dist
AND sn.orig = 'VDO'
以下のコードで作成された 2 つの日付を使用して、このビューを照会しようとしています。
Date startDate = new DateTime(start).toDate();
Date endDate = new DateTime(end).toDate();
開始変数と終了変数は「2013-01-22」として受信されます。クエリを実行しようとすると、次のエラーが表示されます。
java.lang.IllegalArgumentException: タイムスタンプの形式は yyyy-mm-dd hh:mm:ss[.ffffffffff] でなければなりません
DATE にキャストしないようにビューを変更すると、エラーは発生しませんが、結果は正しくありません。
この日付をこの特定のパターンにフォーマットする方法を知っている人はいますか? TimeStamp、java.sql.Dateなどを使用してみましたが、何も機能しませんでした...