2015-03-05 14 views
13

Quale sarebbe l'espressione per verificare se qualcuno ha 20 anni o più senza codificare la data?Come sottrarre anni da sysdate

In SQL

SELECT student_fname 
FROM students 
WHERE dob<'05-MAR-1995'; 

Stavo pensando di usare SYSDATE ma poi non so la sintassi per sottrarre 20 anni.

+0

sysdate - intervallo '20' anno –

+4

Si noti che gli intervalli di sottrazione possono essere problematici. Se il tuo 'sysdate' è un 29 febbraio, la sottrazione di un numero di anni fallirà se l'anno risultante non è un anno bisestile. Ora, in questo caso, dal momento che stai sottraendo un multiplo di 4, sei al sicuro fino al 2120, che è probabilmente abbastanza buono. Se dovessi sottrarre un intervallo diverso, potresti avere problemi. –

+1

Questa è una posibilità molto remota, ma può succedere, penso sia meglio usare add_months :) – Aramillo

risposta

24
WHERE dob < add_months(trunc(sysdate), -12*20); 

potrebbe funzionare partendo dal presupposto che si desidera ignorare la componente temporale della sysdate.