代码之家  ›  专栏  ›  技术社区  ›  skimchi1993

SQL日期变量硬编码

  •  1
  • skimchi1993  · 技术社区  · 7 年前

    我有一个SQL查询,它是硬编码的,可以在今天的日期之前查看结果。例如

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

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

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

    我正在使用OracleSQL开发人员,这只是为了防止在我的WHERE子句中硬编码值。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Kaushik Nayak    7 年前

    可以使用绑定变量

    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