我正在输入SQL查询以从基于Oracle数据库的软件工具中获取一些数据。我使用的是典型的SELECT
语句。
现在,在我的SQL查询中,我在不同的地方使用日期“02.05.2012”。有没有办法在开头定义变量date_string
,然后在所有相关位置使用此变量?
这会简化很多事情。感谢所有提示和技巧!
答案 0 :(得分:4)
您可能会尝试重写查询以从内联视图返回文字...
select
my_date,
...
from(
select to_date('02.05.2012','DD.MM.YYYY') my_date from dual),
table2
where
some_column <= my_date
答案 1 :(得分:2)
您要查找的是绑定变量。
select to-date(:date, 'dd.mm.yyyy') date1
, to-date(:date, 'dd.mm.yyyy') + 1 date2
from dual
在运行时,您需要将值传递给绑定变量。这一切都取决于您的编程语言如何绑定变量,但有很多文档。 DEFINE仅在使用sql * plus时才有效,而在“软件工具”中通常不是这样:)
修改强>
我现在开始明白了。它只是一个textarea,您可以在其中输入查询,它将执行它并返回结果。在这种情况下,您要么编写一些复杂的pl / sql代码,要么手动输入所有日期,或者使用带有select的双重交叉连接:
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
答案 2 :(得分:1)
如果要使用当前日期进行选择,可以使用sysdate。
使用SQLPLUS,您可以定义自己的变量:
SQL> define mydate ="01-05-2012"
SQL> select to_date('&mydate','DD-MM-YYYY') from dual;
01-MAY-12
答案 3 :(得分:0)
尝试以下方法:
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'
您将收到输入&amp;&amp;日期值的提示,如果您想为每个日期输入不同的值,则应键入&amp; date而不是&amp;&amp; date
答案 4 :(得分:0)