使用 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 表中仅包含一年中的“星期六”的主要内容,如果未能解决你的问题,请参考以下文章

生成.txt文件并插入到oracle表pl/sql中

使用 PL SQL 将数据插入到 oracle 表中仅包含一年中的“星期六”

如何使用 pl/sql 中的游标将多列数据插入包含单列的表中?

Oracle - PL/SQL - 使用 SELECT 作为 VALUES 插入所有

Oracle pl/sql forall:如何计算表空间已满(1654)错误的实际插入行数

Oracle中使用PL/SQL怎样用循环插入多条数据?