我正在键入 SQL 查询以从基于 Oracle 数据库的软件工具中获取一些数据。我正在使用典型的SELECT
- 语句。
现在,在我的 SQL 查询中,我在不同的地方使用日期“02.05.2012”。有没有办法date_string
在开始时定义一个变量,然后在所有相关的地方使用这个变量?
这会简化很多事情。感谢所有提示和提示!
您可能会尝试重写查询以从内联视图返回文字...
select
my_date,
...
from(
select to_date('02.05.2012','DD.MM.YYYY') my_date from dual),
table2
where
some_column <= my_date
您要查找的是绑定变量。
select to-date(:date, 'dd.mm.yyyy') date1
, to-date(:date, 'dd.mm.yyyy') + 1 date2
from dual
在运行时,您需要将值传递给绑定变量。这完全取决于您的编程语言如何绑定变量,但是有大量的文档。DEFINE 仅在您使用 sql*plus 时才有效,而在“软件工具”中通常不是这种情况:)
编辑:
我现在开始明白了。它只是一个文本区域,您可以在其中输入查询,它将执行并返回结果。在这种情况下,您要么编写一些复杂的 pl/sql 代码,要么手动输入所有日期,或者使用带有 select from dual 的交叉连接:
with (select to_date('02.05.2012', 'dd.mm.yyyy') my_date from dual) d
select *
from some_table t
cross join d -- no ON required
如果要选择使用当前日期,可以使用 sysdate。
使用 SQLPLUS,您可以定义自己的变量:
SQL> define mydate ="01-05-2012"
SQL> select to_date('&mydate','DD-MM-YYYY') from dual;
01-MAY-12
尝试以下操作:
SELECT *
FROM table1
WHERE to_char(date1,'DD/MM/YYYY') = '&&date'
AND to_char(date2,'DD/MM/YYYY') = '&&date'
AND to_char(date3,'DD/MM/YYYY') = '&&date'
你会得到一个提示输入 &&date 的值,如果你想为每个日期输入不同的值,你应该输入 &date 而不是 &&date