我在将一些日期与正确的格式传递给查询时遇到问题。
我有一个视图,其中列从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等,没有任何工作......
答案 0 :(得分:1)
您可以使用'DATE(sn.notif_date)'代替'CAST(sn.notif_date as DATE)'来填充视图中的Date_Only值,
OR
在选择数据时,您可以使用
'SELECT * FROM yourView GROUP BY DATE(sn.notif_date)'
仅按日期分组..