使用 PL SQL 将数据插入到 oracle 表中仅包含一年中的“星期六”
Posted
技术标签:
【中文标题】使用 PL SQL 将数据插入到 oracle 表中仅包含一年中的“星期六”【英文标题】:Insert data into oracle table using PL SQL only consists of 'Saturday' of the year 【发布时间】:2019-02-27 01:27:27 【问题描述】:我无法将日期数据插入仅包含“星期六”的表中。 这就是我所拥有的:
with dts as (
select date'2015-01-01'+rownum-1 dt from dual
connect by level <= 366
)
select * from dts
where to_char(dt, 'fmday') = 'saturday';
输出只是 2015 年“星期六”的日期。这是我想要的,但是当我试图将它插入表格时我很迷茫。 这与example 类似,唯一的区别是我只需要它在“星期六”。
我尝试编辑的示例代码:
insert into table( id, date, year, indicator)
select sequ.nextval, to_date('31-12-2018 07:00:00', 'DD-MM-YYYY HH24:MI:SS') + level, 2019, 'X' from dual connect by level <= 365
日期部分是我遇到问题的地方。
【问题讨论】:
谢谢普雷斯坦。提供的插入不同于仅星期六的日期生成器。您是否尝试通过在 2015 查询(从 dts 中选择)中包含 id NEXTVAL、“年份”、指标等来运行插入? 2019 版缺少周六的过滤器。您的表实际上是否称为table
或者这是一个示例?如果这是实际的表名,您需要将保留字“TABLE”与表、“DATE”与日期、“YEAR”与年份双引号。
您的查询很好,它只会输出 2015 年的星期六,因为您给了 366 天..
【参考方案1】:
这是你想要的吗?
insert into table (id, date, year, indicator)
with dts as (
select (date '2015-01-01' + rownum - 1) as dt
from dual
connect by level <= 366
)
select sequ.nextval, dt, extract(year from dt), 'X'
from dts
where to_char(dt, 'fmday') = 'saturday';
它基本上使用日期生成查询来为insert
生成数据。
【讨论】:
以上是关于使用 PL SQL 将数据插入到 oracle 表中仅包含一年中的“星期六”的主要内容,如果未能解决你的问题,请参考以下文章
使用 PL SQL 将数据插入到 oracle 表中仅包含一年中的“星期六”
如何使用 pl/sql 中的游标将多列数据插入包含单列的表中?
Oracle - PL/SQL - 使用 SELECT 作为 VALUES 插入所有