PL / SQL在表中查找日期

时间:2012-06-03 05:52:40

标签: sql oracle date

我真的被困在这里。

例如past_data table。

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

NEW_TABLE

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”。在该示例中,您可以看到日期= 06/05/2012的行和past_date表中的20/05/2012被复制到new_table中,因为这两个日期是星期日。

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

请帮忙。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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

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