2017-08-15 1 views
0

je la date suivante dans le tableau oracle:Oracle Convertir Char à ce jour

'01/08/2017 00: 00: 00,000000000'

Je veux convertir ce à ce jour que je me sers ce qui suit, mais je ne sais pas comment faire face à des zéros ?!

. 
. 
. 
T.EXECUTION_LOCAL_DATE_TIME 
between to_date('2017-08-01 00:00:00,000000000', 'yyyy-mm-dd hh:mi:ss') 
and to_date('2017-08-10 00:00:00,000000000', 'yyyy-mm-dd hh:mi:ss'); 

Quelqu'un peut-il m'aider?

Répondre

1

Les dates Oracle ne prennent pas en charge les millisecondes. Si l'on suppose votre colonne EXECUTION_LOCAL_DATE_TIME est une date, la comparaison suivante est le meilleur que vous pouvez faire:

T.EXECUTION_LOCAL_DATE_TIME 
BETWEEN TO_DATE('2017-08-01 00:00:00', 'yyyy-mm-dd hh:mi:ss') AND 
     TO_DATE('2017-08-10 00:00:00', 'yyyy-mm-dd hh:mi:ss'); 

Si vous voulez convertir une chaîne de texte avec millisecondes à un horodatage, vous pouvez utiliser quelque chose comme ceci:

TO_TIMESTAMP ('2017-08-01 00:00:00,000000000', 'yyyy-mm-dd hh:mi:ss,ff') 
+0

',' vs '.' séparateurs dans votre to_timestamp – JohnHC

+0

Merci, ça marche maintenant. –

0

D'une manière générale ces valeurs à ne pas une date, mais un horodatage donc j'utiliser la conversion suivante:

select to_timestamp('2017-08-01 00:00:00,000000000', 'yyyy-mm-dd hh24:mi:ss,ff6') 
from dual; 

techniquement, vous pouvez avoir des zéros non après virgule, donc Si vous voulez obtenir une valeur correcte mais pas tronquée, utilisez le type de date d'horodatage.