OK, je pense que je t'ai eu. Vous voulez faire ce qui suit ?
select <columns>
from my_table
where state_date <= <some date>
and state_time <= <some time>
Il est assez inhabituel de se soucier des millisecondes, mais si vous le faites, vous devez utiliser systimestamp
.
À en juger par le fait que vous avez divisé la date et l'heure, ce sont des caractères, donc, je vais devoir deviner le masques de format
. S'ils se trompent, le lien devrait vous guider sur ce qu'il faut faire. Il n'est pas sage, soit dit en passant, de diviser une date de cette façon. Vous pouvez créer une colonne en utilisant le timestamp
type de données dans votre table, ce qui rendrait votre problème extrêmement simple.
Donc, je ne sais pas pourquoi vous avez choisi le 'Day'
format pour votre requête mais avec ce <some date>
devient to_char(sysdate, 'DAY')
.
D'après votre commentaire ci-dessous <some date>
serait to_char(sysdate, 'DD-MON-YY')
<some time>
serait to_char(systimestamp,'HH24:MI:SS:FF3')
, ce qui vous donnerait l'horodatage à la milliseconde, bien que le type de données puisse aller à la microseconde.
Cela me semble un peu étrange mais votre requête deviendrait alors :
select <columns>
from my_table
where state_date <= to_char(sysdate, 'DD-MON-YY')
and state_time <= to_char(systimestamp,'HH24:MI:SS:FF3')
Il serait plus normal, si vous stockez une date sous forme de chaîne, de la stocker au format yyyymmdd
donc au moins vous pouvez garantir qu'il est en ordre. Si vous avez fait quelque chose comme ça, changez simplement le masque de format. Si ce n'est pas le cas, ces requêtes ne fonctionneront pas comme prévu.
Personnellement, si vous avez pour stocker les données de cette façon et en supposant state_date
est stocké sous, par exemple, dd-mon-yy
, c'est-à-dire y compris l'année, le mois ET le jour et state_time
est stocké comme indiqué ci-dessus, alors je ferais quelque chose comme ceci :
select <columns>
from my_table
where to_timestamp(state_date || state_time, 'DD-MON-YYHH24:MI:SS:FF3')
<= systimestamp
Cela rend beaucoup plus évident ce qui se passe et il n'y a aucune ambiguïté sur ce que <
signifie que dans cette situation, une date sera toujours inférieure à une date future, ce qui n'est pas nécessairement vrai pour les chaînes.
J'espère que cela a du sens.