2012-08-28 5 views
2

Je dois obtenir des données d'une base de données Oracle qui sont 2 semaines plus anciennes à ce jour.données d'oracle entre les dates

C'est une requête complexe et j'ai cette condition dans la clause where.

J'ai essayé d'utiliser entre. Mais en vain . Je suis sûr que je fais une erreur stupide dans le travail entre les deux.

to_date(to_char(sysdate,'yyyy') || to_char(sgs.status_Date,'mmdd'),'yyyymmdd') 
    between (trunc(sysdate)) and trunc(sysdate) - 14 

Toute aide serait grandement appréciée.

+0

Est-ce une sorte de calcul d'anniversaire? Vous prenez le jour + mois de 'sgs.status_Date', mais en utilisant l'année de' sysdate'? –

Répondre

1

Comme dit @valex, vous avez besoin d'échanger l'ordre des expressions. Comme le dit documentation for the BETWEEN condition:

... la valeur de

expr1 BETWEEN expr2 AND expr3 

est la valeur de l'expression booléenne:

expr2 <= expr1 AND expr1 <= expr3 

Votre version a

your_date between trunc(sysdate) and (trunc(sysdate) - 14) 

ce qui équivaut à

trunc(sysdate) <= your_date and your_date <= (trunc(sysdate) - 14) 

... qui ne peut jamais être vrai - your_date faudrait être simultanément après aujourd'hui, et avant il y a deux semaines.

1

Vous devez changer entre les dates dès sysdate-14 < sysdate et devrait être le premier

to_date(to_char(sysdate,'yyyy') || to_char(sgs.status_Date,'mmdd'),'yyyymmdd') 
between (trunc(sysdate) - 14) and (trunc(sysdate))