-1

我真的被困在这里了。

例如 past_data 表。

name|date      |hour   |data
____________________________________________________________
je  |06/05/2012|1       |32323
je  |06/05/2012|2       |43564
je  |20/05/2102|3       |12334
je  |06/05/2012|4       |123123
je  |13/05/2012|1       |133223

新表

name|date      |hour   |data
____________________________________________________________
je  |06/05/2012|1       |32323
je  |06/05/2012|2       |43564
je  |20/05/2102|3       |12334
je  |06/05/2012|4       |123123

如何编写一个程序来查找从列“日期”表“past_date”复制到talbe“new_table”的全天匹配当天(今天是星期天)。在示例中,您可以看到过去日期表中 date = 06/05/2012 和 20/05/2012 的行被复制到 new_table 中,因为这两个日期是星期日。

然后循环这个过程 13 次(总共几周),每次增加 1 天,例如周日然后周一然后周二等等。

请帮忙。

4

2 回答 2

1

你不需要PLSQL,
试试这个:

INSERT INTO new_table (name, date, hour, data)
  SELECT name, date, hour, data
    FROM past_data
   WHERE to_char(sysdate, 'd') = to_char(date, 'd')

更新:我真的不明白为什么以及它有什么好处,但是既然你问了......

如果您使用 PLSQL,那么您可以执行以下操作:

BEGIN
  FOR i IN 0 .. 12 LOOP
    INSERT INTO new_table (name, date, hour, data)
      SELECT name, date, hour, data
        FROM past_data
       WHERE to_char(sysdate + i, 'd') = to_char(date, 'd');
  END LOOP;
END;
于 2012-06-03T06:42:55.547 回答
0

获取一周中特定日期的格式说明符是“D”:

INSERT INTO new_table (name, date, hour, data)
  SELECT name, date, hour, data
    FROM past_data
   WHERE to_char(date, 'D') = 1
于 2012-06-03T07:09:50.397 回答