2

いくつかの日付を正しいフォーマットでクエリに渡すのに問題があります。

列が 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などを使用してみましたが、何も機能しませんでした...

4

1 に答える 1

1

ビューに Date_Only 値を入力するために、「CAST(sn.notif_date as DATE)」の代わりに「DATE(sn.notif_date)」を使用できます。

また

データ選択時に使用できます

「SELECT * FROM yourView GROUP BY DATE(sn.notif_date)」

日付のみでグループ化する場合..

于 2013-07-02T07:09:22.780 に答える