And*_*rew 3 sql oracle for-loop date oracle11g
我想将一些数据插入到与下一年的日期相关联的表中.我实际上只需要插入工作日.
BEGIN
FOR i IN 1..365 LOOP
INSERT INTO MY_TABLE (ID, MY_DATE)
VALUES (i, (to_date(sysdate,'DD-MON-YY')-1)+i);
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)
我可以通过返回并删除周末的行来解决我的问题,但这似乎相当不优雅 - 有人能想到一种方法来修改我的循环以便它跳过周末吗?
您可以在插入行之前检查一周中的某一天(一周的日期名称将取决于您的NLS设置,因此这不是最强大的解决方案)
BEGIN
FOR i IN 1..365 LOOP
IF( to_char(sysdate-1+i,'fmDAY') NOT IN ('SATURDAY', 'SUNDAY') )
THEN
INSERT INTO MY_TABLE (ID, MY_DATE)
VALUES (i, (to_date(sysdate,'DD-MON-YY')-1)+i);
END IF;
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)