我不是最好的SQL,所以我需要一些帮助。我有一个现有的查询,我们用来从DB2 for IBM i(AS400)提取数据,我想修改它,因此它只是提取最近6个月的数据,而不是不断改变范围。我相信OHSTDT字段在服务器上保存为YYYYMMDD。
WHERE GRPORDH.ODSTDT = GRPPHDR.OHSTDT AND GRPORDH.ODGRPH = GRPPHDR.OHGRPH AND (GRPPHDR.OHSTDT Between {d '2013-01-01'} And {d '2015-06-01'})
感谢您的帮助!
答案 0 :(得分:1)
构建或下载将日期类型转换为数字的函数。
我使用的是iDate:
www.think400.dk/downloads.htm
然后您的查询变为:
WHERE GRPORDH.ODSTDT = GRPPHDR.OHSTDT
AND GRPORDH.ODGRPH = GRPPHDR.OHGRPH
AND GRPPHDR.OHSTDT between ConvertToIDate(CURRENT_DATE - 6 MONTHS,'*CCYMD')
AND ConvertToIDate(CURRENT_DATE,'*CCYMD')
请注意备用表格:
WHERE GRPORDH.ODSTDT = GRPPHDR.OHSTDT
AND GRPORDH.ODGRPH = GRPPHDR.OHGRPH
AND iDate(GRPPHDR.OHSTDT) between CURRENT_DATE - 6 MONTHS
AND CURRENT_DATE
使用iDate()函数从数字日期转换为日期日期不是首选方法。它会工作,你会发现很多这样做的例子。但由于两个原因,它表现不佳。
iDate()函数和ConvertToIDate()函数都可以在iDate库中找到,您可以在上面的链接下载。