PL SQL - 以dd / mm / yyyy +1格式添加日期

时间:2015-04-15 00:19:16

标签: sql date plsql toad

我想用以下方式编写PLSQL查询:

Select ...
FROM ...
WHERE
Date = '06/FEB/2011' + 7(days)

我是PLSQL的新手,我见过像date + 1这样的解决方案,但是要求按日期在变量中。 我厌倦了如下变量:

declare date1  date;
begin
date1 := '06/FEB/2015';
select *
from 
    ...
where
        DATE_LABEL = date1 + 1;

end;

但它一直给我一个错误,期望在SELECT中有一个INTO语句。我不确定这意味着什么。

由于

3 个答案:

答案 0 :(得分:2)

  1. DATE数据类型未存储为字符串,因此不建议对特定格式进行硬编码,因为格式可能会根据您的数据库/会话NLS_DATE_FORMAT值而更改。更可移植的表达式是在查询中包含数据格式掩码,例如:

    select * 
    from table Foo
    where date_col = to_date('06/FEB/2011','DD/MON/YYYY) + 7;
    
  2. 日期格式掩码值记录为here

    1. 在pl / sql块中执行查询时,必须在返回时为结果集定义某处。您需要使用光标。在您的示例中,如果您只返回一行,则可以像您一样为结果声明占位符,但需要在选择中使用INTO关键字:

      declare date1  date;
      begin
      date1 := '06/FEB/2015';
      select date_col
      into   date1
      from  table  -- etc.    
      end;
      
    2. 我建议阅读一些PL / SQL教程,详细介绍这些基本概念。

答案 1 :(得分:1)

实际上,更便携的解决方案是使用标准的Ansi日期文字。这将被大量DBMS识别。所以你的代码看起来像这样:

Select  ...
FROM    ...
WHERE   DateField = date '2011-02-06' + 7;

WHERE   DateField = (date '2011-02-06') + 7;

只是为了让它更清晰。

日期文字必须采用“yyyy-mm-dd”形式并且不受系统日期格式设置的影响。

答案 2 :(得分:0)

ADDDATE(date, INTERVALE INTEGER DAY) 

您应该写下天数,也可以使用月、分、小时。