PLSQL - 以 dd/mm/yyy +1 格式添加天数
PLSQL - Add days to date in format dd/mm/yyy +1
我想按以下方式编写 PLSQL 查询:
Select ...
FROM ...
WHERE
Date = '06/FEB/2011' + 7(days)
我是 PLSQL 的新手,我见过诸如 date+1 之类的解决方案,但它要求 by date 位于变量内。
我厌倦了像下面这样输入变量:
declare date1 date;
begin
date1 := '06/FEB/2015';
select *
from
...
where
DATE_LABEL = date1 + 1;
end;
但它一直给我一个错误,要求 SELECT 中有一个 INTO 语句。我不确定这是什么意思。
谢谢
DATE
数据类型不存储为字符串,因此不建议硬编码为特定格式,因为格式可能会根据您的 database/session NLS_DATE_FORMAT
值。一种更便携的表达方式是在查询中包含数据格式掩码,例如:
select *
from table Foo
where date_col = to_date('06/FEB/2011','DD/MON/YYYY) + 7;
记录了日期格式掩码值 here。
在 pl/sql 块中执行查询时,您必须为要存储在 return 上的结果集定义某个位置。您需要为此使用游标。在你的例子中,如果你只有一行到 return,你可以像你一样为结果声明一个占位符,但需要在 select:
中使用 INTO 关键字
declare date1 date;
begin
date1 := '06/FEB/2015';
select date_col
into date1
from table -- etc.
end;
我建议阅读一些 PL/SQL 教程,其中详细介绍了这些基本概念。
实际上,一个更便携的解决方案是使用标准的 Ansi 日期文字。这将被大量的 DBMS 所认可。所以你的代码看起来像这样:
Select ...
FROM ...
WHERE DateField = date '2011-02-06' + 7;
或
WHERE DateField = (date '2011-02-06') + 7;
只是为了更清楚。
日期文字必须采用'yyyy-mm-dd'形式并且不受系统日期格式设置的影响。
ADDDATE(date, INTERVALE INTEGER DAY)
你应该写天数,也可以用月、分、小时。
我想按以下方式编写 PLSQL 查询:
Select ...
FROM ...
WHERE
Date = '06/FEB/2011' + 7(days)
我是 PLSQL 的新手,我见过诸如 date+1 之类的解决方案,但它要求 by date 位于变量内。 我厌倦了像下面这样输入变量:
declare date1 date;
begin
date1 := '06/FEB/2015';
select *
from
...
where
DATE_LABEL = date1 + 1;
end;
但它一直给我一个错误,要求 SELECT 中有一个 INTO 语句。我不确定这是什么意思。
谢谢
DATE
数据类型不存储为字符串,因此不建议硬编码为特定格式,因为格式可能会根据您的 database/sessionNLS_DATE_FORMAT
值。一种更便携的表达方式是在查询中包含数据格式掩码,例如:select * from table Foo where date_col = to_date('06/FEB/2011','DD/MON/YYYY) + 7;
记录了日期格式掩码值 here。
在 pl/sql 块中执行查询时,您必须为要存储在 return 上的结果集定义某个位置。您需要为此使用游标。在你的例子中,如果你只有一行到 return,你可以像你一样为结果声明一个占位符,但需要在 select:
中使用 INTO 关键字declare date1 date; begin date1 := '06/FEB/2015'; select date_col into date1 from table -- etc. end;
我建议阅读一些 PL/SQL 教程,其中详细介绍了这些基本概念。
实际上,一个更便携的解决方案是使用标准的 Ansi 日期文字。这将被大量的 DBMS 所认可。所以你的代码看起来像这样:
Select ...
FROM ...
WHERE DateField = date '2011-02-06' + 7;
或
WHERE DateField = (date '2011-02-06') + 7;
只是为了更清楚。
日期文字必须采用'yyyy-mm-dd'形式并且不受系统日期格式设置的影响。
ADDDATE(date, INTERVALE INTEGER DAY)
你应该写天数,也可以用月、分、小时。