2017-02-14 207 views
1

我想编写一个查询,其中需要指定从订单日期开始的日期的自定义范围(而不是硬编码日期范围)。在使用的表格中,我有订单的日期。在SQL查询中指定自定义日期范围

截至目前我已经硬编码的日期范围,如:

where owh.order_day between TO_DATE('2016/07/15','YYYY/MM/DD') and TO_DATE('2017/01/17','YYYY/MM/DD') 

其中order_day是一个日期。

反倒是我想是这样的:

where owh.order_day between TO_DATE(owh.order_day - 1,'YYYY/MM/DD') and TO_DATE(owh.order_day +3,'YYYY/MM/DD') 

我做 “-1”,因为它的 “之间”,所以它会从order_day - order_day + 2

例如,如果order_day是:“2016年1月1日”,那么我想要的条件是日期范围动态计算为:“2016年1月16日 - 20/01/2016”。 是这样的可能吗?如果是的话,我们如何才能在SQL中实现?

的DB的问题是Oracle 任何线索赞赏

+1

SQL Server不具有'TO_DATE()'函数。你使用的是哪个数据库? –

+0

它是一个公司特定的数据库。这通常可能在任何SQL查询中? – user2696258

+0

这个问题根本没有意义。你想比较'order_day'到一个基于'order_day'的范围。编辑你的问题(或问另一个问题)。使用您正在使用的正确数据库进行标记。提供样本数据和期望的结果。 –

回答

0

因为你还没有告诉我们你在使用了,既然你都这么说“任何线索赞赏”,这RDBMS,我想我们可以自由地给出一个答案对于任何RDBMS。下面将针对MySQL的工作:

BETWEEN DATE_SUB(somedate, INTERVAL 1 DAY) AND DATE_ADD(somedate, INTERVAL 1 DAY) 

(来源:https://www.tutorialspoint.com/sql/sql-date-functions.htm#function_date-add

+0

DB是oracle。这个解决方案能完成吗? – user2696258

+0

LMGTFY:https://docs.oracle.com/cd/E57340_01/DR/Dateadd.html –