我想将一些数据插入与下一年的日期相关的表中。我实际上只需要插入工作日。
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;
我可以通过回退并删除周末的行来解决我的问题,但这似乎不太优雅-有人能想到一种方法来修改我的循环以便跳过周末吗?
您总是可以在插入行之前检查星期几(星期几的名称取决于您的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;