當談到Oracle時,我非常習慣於初學者。我有麻煩搞清楚如何做類似這樣的東西:從使用SQL的日期中減去n天
SELECT ID, NAME, TO_CHAR(DATEBIRTH, 'DD/MM/YYYY HH24:MI:SS')
FROM PEOPLE WHERE DATEBIRTH >= ANOTHERDATE - NDAY
說得短,我要選擇大家誰特定的日期和時間之前出生N天,但我不太肯定這是做到這一點的方法,也不會讓我得到我期望的結果。
PS:我在oracle8i下開發。
當談到Oracle時,我非常習慣於初學者。我有麻煩搞清楚如何做類似這樣的東西:從使用SQL的日期中減去n天
SELECT ID, NAME, TO_CHAR(DATEBIRTH, 'DD/MM/YYYY HH24:MI:SS')
FROM PEOPLE WHERE DATEBIRTH >= ANOTHERDATE - NDAY
說得短,我要選擇大家誰特定的日期和時間之前出生N天,但我不太肯定這是做到這一點的方法,也不會讓我得到我期望的結果。
PS:我在oracle8i下開發。
您的查詢對我來說是正確的。這就是你從Oracle中的日期中減去天數的方法。這個環節擁有更深入的瞭解你,你應該要添加月或數年:
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1157035034361
你說得對,夠了! – MrMokari
你可能要考慮你的約會「ANOTHERDATE」的時間部分。
如果你只用整整兩天有關,那麼你可以重寫查詢爲:
SELECT ID, NAME, TO_CHAR(DATEBIRTH, 'DD/MM/YYYY HH24:MI:SS')
FROM PEOPLE
WHERE DATEBIRTH >= TRUNC(ANOTHERDATE - NDAY)
注:這是假設「NDAY」是一個數字。 「簡而言之,我想選擇在特定日期和時間之前N天出生的每個人,但我不確定這是否是這樣做的,也不是說它會給我期望的結果「。
我的第一個查詢會在「ANOTHERDATE」之前的「NDAY」天前爲您提供生日的所有人。
這將讓你大家誰過生日ON那一天是「ANOTHERDATE」之前「NDAY」天:
SELECT id,
name,
TO_CHAR(datebirth, 'DD/MM/YYYY HH24:MI:SS') AS birth_date
FROM people
WHERE TRUNC(datebirth) = TRUNC(anotherdate - NDAY);
如果對「datebirth」列的索引,那麼你做不想與TRUNC把它包起來,所以你可以使用這將能夠使用任何指數「datebirth」如下:從它
SELECT id,
name,
TO_CHAR(datebirth, 'DD/MM/YYYY HH24:MI:SS') AS birth_date
FROM people
WHERE datebirth >= TRUNC(anotherdate - NDAY)
AND datebirth < (TRUNC(anotherdate - NDAY) + 1);
你第一次查詢更多的是我正在尋找! – MrMokari
你必須轉換(anotherdate)明確迄今然後減去(ndays) :
SELECT ID, NAME, TO_CHAR(DATEBIRTH, 'DD/MM/YYYY HH24:MI:SS')
FROM PEOPLE
WHERE DATEBIRTH >= TO_DATE(ANOTHERDATE) - NDAY
下面的查詢減n天從給定日期
select to_date('date') - 'n days'
from dual
例如:
select TO_DATE('02-Jul-16') - 90
from dual
的Oracle 8i的?這甚至是支持嗎? – Ollie
什麼阻止你**只是嘗試**? –
@Ollie它不認爲它支持了,但我的客戶端不會升級。 – MrMokari