请不要PL / SQL。这仅适用于纯Oracle SQL。 11克。
因此,如果在脚本级别我有一个Date变量的绑定变量,让我们说:current_date,我怎样才能根据该变量选择另一个基于算法的日期,然后在其他查询中使用该结果。
这让我烦恼,我似乎无法提出解决方案。
算法是这样的:
如果:current_date是星期一,请将我们想要的变量设为上周五,如果不是只是让我们想要的变量指向:current_date - 1.
所以在这个例子中,我将如何实现这一目标?请记住,目标是在查询中的其他虚拟表中使用它。
任何帮助?
感谢。
答案 0 :(得分:0)
这似乎是非常简单的日期算术:
select (case when to_char(:current_date, 'D') = '1'
then :current_date - 3
else :current_date - 1
end)
您也可以在时间段内使用interval
。
答案 1 :(得分:0)
如果您在SQL Developer中运行代码而不是语句,则可以使用SQL * Plus中的语法来声明各种类型的绑定变量。
不幸的是,DATE
不是SQL * Plus或SQL Developer
Usage: VAR[IABLE] [ [ NUMBER | CHAR | CHAR (n [CHAR|BYTE]) | VARCHAR2 (n [CHAR|BYTE]) | NCHAR | NCHAR (n) | NVARCHAR2 (n) | CLOB | NCLOB | REFCURSOR | BINARY_FLOAT | BINARY_DOUBLE ] ] where n is a positive integer
以下代码在SQL Developer中作为脚本运行:
var my_bind varchar2;
exec :my_bind := sysdate;
select :my_bind from dual;
exec select 'test' into :my_bind from dual;
select :my_bind from dual;
生成以下输出:
PL/SQL procedure successfully completed.
:MY_BIND
----------------------------------------------------------------------------
16-JUL-2015 13:49:54
PL/SQL procedure successfully completed.
:MY_BIND
----------------------------------------------------------------------------
test
这仍然对日期没有帮助,因为你仍然会遇到需要使用to_date和to_char来转换日期的字符串。