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[.fffffffff]

如果我将视图更改为不强制转换为 DATE,我不会收到错误消息,但结果会出错。

任何人都知道如何将此日期格式化为这种特定模式?我尝试使用 TimeStamp、java.sql.Date 等,但没有任何效果......

4

1 回答 1

1

您可以使用 'DATE(sn.notif_date)' 而不是 'CAST(sn.notif_date as DATE)' 来填充视图中的 Date_Only 值,

或者

在选择数据时,您可以使用

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

仅按日期分组..

于 2013-07-02T07:09:22.780 回答