Ok, je pense que je vais avoir l'année précédente au lieu de la veille, mais je dois passer à la veille.
SELECT TO_DATE(TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD'),'YYYY-MM-DD') - 1 FROM Dual
Je le compare à un tampon date/heure dans ce format et souhaite obtenir toutes les lignes du jour précédent.
YYYY-MM-DD HH:MM:SS
Donc j'essaie quelque chose comme ça
SELECT field,datetime_field
FROM database
WHERE datetime_field > TO_DATE(TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD'),'YYYY-MM-DD') - 1
que diriez-vous de sysdate?
SELECT field,datetime_field
FROM database
WHERE datetime_field > (sysdate-1)
Vous pouvez supprimer la partie heure d'une date en utilisant TRUNC
.
select field,datetime_field
from database
where datetime_field >= trunc(sysdate-1,'DD');
Cette requête vous donnera toutes les lignes avec des dates à partir de hier. Notez le deuxième argument à trunc()
. Vous pouvez utiliser ceci pour tronquer une partie de la date.
Si votre date-heure contient '2011-05-04 08:23:54'
, la date suivante sera retournée
trunc(datetime_field, 'HH24') => 2011-05-04 08:00:00
trunc(datetime_field, 'DD') => 2011-05-04 00:00:00
trunc(datetime_field, 'MM') => 2011-05-01 00:00:00
trunc(datetime_field, 'YYYY') => 2011-00-01 00:00:00
SELECT field,datetime_field
FROM database
WHERE datetime_field > (CURRENT_DATE - 1)
Sa fait un certain temps que j'ai travaillé sur Oracle. Mais, je pense que cela devrait fonctionner.
ce
SELECT field,datetime_field
FROM database
WHERE datetime_field > (sysdate-1)
marchera. La question est la suivante: le champ datetime est-il identique à sysdate? Ma manière de gérer cela: utilisez la fonction 'to_char ()' (ne fonctionne que sous Oracle).
échantillons: jour précédent :
select your_column
from your_table
where to_char(sysdate-1, 'dd.mm.yyyy')
ou
select extract(day from date_field)||'/'||
extract(month from date_field)||'/'||
extract(year from date_field)||'/'||
as mydate
from dual(or a_table)
where extract(day from date_field) = an_int_number and
extract(month from date_field) = an_int_number and so on..
date de comparaison :
select your_column
from your_table
where
to_char(a_datetime_column, 'dd.mm.yyyy') > or < or >= or <= to_char(sysdate, 'dd.mm.yyyy')
intervalle de temps entre hier et un jour avant-hier:
select your_column
from your_table
where
to_char(a_datetime_column, 'dd.mm.yyyy') > or < or >= or <= to_char(sysdate-1, 'dd.mm.yyyy') and
to_char(a_datetime_column, 'dd.mm.yyyy') > or < or >= or <= to_char(sysdate-2, 'dd.mm.yyyy')
autre plage de temps variation
select your_column
from your_table
where
to_char(a_datetime_column, 'dd.mm.yyyy') is between to_char(sysdate-1, 'dd.mm.yyyy')
and to_char(sysdate-2, 'dd.mm.yyyy')
Je pense que vous pouvez aussi exécuter cette commande:
sélectionnez (sysdate-1) PREVIOUS_DATE parmi dual;