Oracle 11g Query连续16周插入一周的第一天和最后一天

时间:2017-03-15 10:41:09

标签: oracle date-arithmetic

我有一个临时表,必须在星期一和星期几的最后一天作为星期日插入一周的第一天。表格中的数据应该如下所示

    <form action="#" onsubmit="addDice()">
    <p>Pick how many dice you want to roll:</p>
    <input id="diceNumber" type="number" name="diceNumber" onsubmit="return addMoreDice()">
    <input type="submit" value="Submit">
</form>

<button onclick="addDice()">Add Dice</button>

<div id="diceTable">

</div>

1 个答案:

答案 0 :(得分:3)

INSERT INTO your_temp_table
SELECT LEVEL,
       TRUNC( SYSDATE, 'IW' ) + NUMTODSINTERVAL( 7 * (LEVEL - 1), 'DAY' ),
       TRUNC( SYSDATE, 'IW' ) + NUMTODSINTERVAL( (7 * LEVEL) - 1, 'DAY' )
FROM   DUAL
CONNECT BY LEVEL <= 16;

注意:您可以使用 TRUNC( SYSDATE, 'IW' ) + 7 * (LEVEL - 1) ,但我更愿意明确表示查询正在添加一个天数的倍数。

IW格式掩码将截断为ISO周,它始终在星期一开始,无论NLS_DATE_LANGUAGENLS_TERRITORY设置如何。如果您使用DAY格式掩码并且某人更改了这些设置(或在国际上运行查询),那么您的查询可能无法执行您的预期操作。