J'ai une requête ci-dessous où le DT_ID
est la colonne de type de données de nombre et la valeur stockée dans cette colonne est la date dans le format 'YYYYMMDD'
.La conversion du nombre à ce jour affecte les performances dans Oracle
Dans ma requête ci-dessous, je veux obtenir les données de la semaine précédente du lundi au dimanche pour les rapports hebdomadaires et cette requête fonctionne très rapidement.
select ID,NAME
from TEST_REPORT
where
DT_ID between 20170904 and 20170910;
Mais c'est une date codée en dur et je veux la rendre dynamique. J'ai essayé avec cette requête:
select ID,NAME
from TEST_REPORT
where
DT_ID>= next_day(trunc(sysdate), 'MONDAY') - 14 and
DT_ID< next_day(trunc(sysdate), 'MONDAY') - 7;
Mais il donne cette erreur:
expecting Number and got date
Quand je convertir ce nombre à ce jour comme ci-dessous, il est question résultant beaucoup de problèmes de performance. Y a-t-il un autre moyen de le rendre dynamique avec de meilleures performances?
select ID,NAME
from TEST_REPORT
where
to_date(DT_ID,'YYYYMMDD') >= next_day(trunc(sysdate), 'MONDAY') - 14 and
(DT_ID,'YYYYMMDD') < next_day(trunc(sysdate), 'MONDAY') - 7;
S'il vous plaît montrer la définition de table, et les types de données de colonne, et les données de table exemple. merci – OldProgrammer