【发布时间】:2014-11-20 06:04:53
【问题描述】:
我正在尝试获取具有所有时间戳列的记录。
我正在使用以下查询来获取在最终日期和(最终日期 - 30)天之间创建的产品,即在“最终日期”范围内的过去 30 天内创建的产品。
我有 2014 年 10 月 30 日创建的产品。对于相同的产品,启动日期为 2014 年 11 月 12 日。但是,当我使用以下查询时,它们没有被获取。
SELECT A.ROW_ID,
A.PROD_NAME
FROM PROD A,
PROD_REL B
WHERE A.ROW_ID = B.PAR_ROW_ID
AND TO_DATE(A.CREATED_DT,'YYYY-MM-DD') BETWEEN (TO_DATE(B.FINAL_DATE,'YYYY-MM-DD') - 30)
AND (TO_DATE(B.FINAL_DATE,'YYYY-MM-DD'));
那么,如果我遗漏了什么,请告诉我吗?
这是一个指向SQLFiddle 的链接,用于演示该问题。
【问题讨论】:
-
@NicholasKrasnov 我尝试使用它 ~ SELECT A.ROW_ID, A.PROD_NAME FROM PROD A, PROD_REL B WHERE A.ROW_ID = B.PAR_ROW_ID AND A.CREATED_DT BETWEEN (B.FINAL_DATE - 30) AND B.FINAL_DATE; ~ 它给了我未知的命令(B.FINAL_DATE - 30)
-
如果您提供表的结构以及每列的数据类型以及该(那些)表中的数据样本,将会很有帮助。否则,在不知道您在这些表中存储的内容以及存储方式的情况下,几乎不可能提供有用的答案。
-
我希望月与日之间没有混淆:2014 年 11 月 12 日可能是 2014 年 12 月 11 日吗?
-
@NicholasKrasnov:我在这里提供了详细信息sqlfiddle.com/#!4/233023/1
-
Here we go。您将“日期”存储为日期,因此不需要
to_date()函数。