En soustrayant timestamp dans oracle retour bizarre de données
J'essaie de soustraire deux dates et attend quelques flottante valeurs de retour. Mais ce que j'ai reçu en retour est comme ci-dessous:
+000000000 00:00:07.225000
Multipliant la valeur par 86400 (je veux obtenir la différence en seconde) est de trouver quelque chose d'encore plus étrange de la valeur renvoyé:
+000000007 05:24:00.000000000
une idée? Je suis soupçonnant est a quelque chose à voir avec le type coulée.
OriginalL'auteur You Qi | 2012-04-27
Vous devez vous connecter pour publier un commentaire.
Je suppose que vos colonnes sont définies comme
timestamp
plutôt quedate
.Le résultat de soustraire les horodatages est un
interval
alors que le résultat de la soustractiondate
colonnes est un nombre représentant le nombre de jours entre les deux dates.Ceci est documenté dans le manuel:
http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i48042
Ainsi, lorsque vous lancez votre colonnes timestamp de la date, vous devriez obtenir ce que vous attendez:
Modifier:
Si vous voulez convertir l'intervalle si par exemple le nombre de secondes (comme un nombre), vous pouvez faire quelque chose comme ceci:
Le résultat ci-dessus est
55499.5802
le scrutin, le résultat après la coulée est arrondi à la deuxième. est-il une meilleure façon que je peux obtenir la différence entre les deux timestamp en valeur à virgule flottante (jusqu'à mili ou de la micro-seconde)?
comme quoi les types de données sont les colonnes définies?
c'est
TIMESTAMP(6)
. J'ai vraiment une requête comme ceci:((CAST(Res.RAW_DATE AS DATE) - CAST(Req.RAW_DATE AS DATE))*86400) AS TIME_DIFF,
le casting de
DATE
"tours" pour les secondes. Vous êtes de perdre quelques microsecondes de cette façon.OriginalL'auteur a_horse_with_no_name
Lire cet article:
http://asktom.oracle.com/pls/asktom/ASKTOM.download_file?p_file=6551242712657900129
Exemple:
vous n'avez pas besoin d'une fonction, cette instruction: select datediff ("ss", date1, date2 ) secondes de yourtable
Tom crée
datediff
dans cet article, il n'est pas un standard intégré dans la fonction. Il aussi de ne pas travailler pourtimestamp
valeurs qu'elle repose surdate
arithmétique de toute façon.OriginalL'auteur buzznfrog