硬编码的SQL日期变量

时间:2018-08-08 02:54:20

标签: sql oracle variables oracle-sqldeveloper

我有一个SQL查询,该查询经过硬编码以查看今天之前的结果。例如

select * 
from test
where date between (sysdate-1) and (sysdate)

我想用像ONE_DAY这样的变量替换(sysdate-1)中的1,并将该变量设置为等于1。

ONE_DAY = 1

select * 
from test
where date between (sysdate-ONE_DAY) and (sysdate)

我正在使用Oracle SQL Developer,这只是为了防止在where子句中使用硬编码值。

1 个答案:

答案 0 :(得分:3)

您可以使用Bind变量

VARIABLE  one_day NUMBER
EXEC :one_day := 1
select * from test where some_date 
between SYSDATE - :one_day and sysdate

或替换变量

DEFINE one_day = 1
select * from test where some_date 
between SYSDATE - &one_day and sysdate

在SQL开发人员中,使用“以脚本运行(F5)”选项

更多信息,请访问:

Literals, Substitution Variables and Bind Variables