L'obtention de secondes entre les deux Oracle Horodateurs
Tom Kyte suggère à utiliser EXTRAIT
pour obtenir la différence:
extract( day from (x-y) )*24*60*60+
extract( hour from (x-y) )*60*60+
...
Cela semble être plus difficile à lire et plus lent que cela, par exemple:
( CAST( x AS DATE ) - CAST( y AS DATE ) ) * 86400
Alors, quel est le moyen d'obtenir la différence entre les deux Horodateurs en quelques secondes? Merci!
Personnellement, je préfère 24*60*60 à 86400. Même un non-technophile reconnaîtrait 24 heures dans une journée et que les années 60 liées à des minutes et des secondes.
C'est certainement vrai, merci!
Veuillez noter que les résultats ne sont pas identiques (voir mon commentaire ci-dessous)
La méthode avec la fonte peut produire de mauvais résultats en raison de "l'heure d'été" dans des fuseaux horaires différents. L'extrait le gère correctement.
C'est certainement vrai, merci!
Veuillez noter que les résultats ne sont pas identiques (voir mon commentaire ci-dessous)
La méthode avec la fonte peut produire de mauvais résultats en raison de "l'heure d'été" dans des fuseaux horaires différents. L'extrait le gère correctement.
OriginalL'auteur Peter Lang | 2010-10-18
Vous devez vous connecter pour publier un commentaire.
"Meilleures Pratiques"
Quoi que vous fassiez, l'envelopper dans une fonction, par exemple
seconds_between (from_date, to_date)
- n'a pas d'importance comment il le fait (choisir la méthode la plus efficace) - ensuite, il sera parfaitement évident que votre code est en train de faire.Performance
J'ai testé les deux méthodes sur les 11gR1 sur mon ordinateur portable (windows xp) avec le cas de test ci-dessous. Il semble que le CAST option est la plus rapide. (t1 est la base, t2 utilisé le
extract
méthode, t3 utilisé lecast
méthode)Script de Test
+1
), je suis actuellement à la recherche pour que la méthode plus efficace que de vous en parler 🙂Il n'y a pas beaucoup de différence de test (par exemple, exécuter chacun quelques milliers de fois avec diverses entrées) et de voir.
là vous allez 🙂 j'espère que ça aide
Juste noter que le
extract
méthode comprend une fraction de seconde, alors que lacast
méthode tronque.Merci, j'avais déjà testé ces deux tentatives (ma question, dit que le premier est plus lent). Toujours curieux, si il y a d'autres moyens, ou si il y a une "bonne façon" de faire ça 🙂
OriginalL'auteur Jeffrey Kemp
Autres:
J'ai trouvé que cela fonctionne aussi bien pour obtenir la différence en quelques secondes, y compris millisecondes.
C'est même à épargner pour les fuseaux horaires avec "heure d'été", tandis que la méthode d'extraction aurait un problème.
Malheureusement, la différence entre t1 et t2 est limité pour que le résultat soit à droite. Casting les horodatages de format de date n'est pas une option parce que les fractions de secondes sont perdues.
OriginalL'auteur user3820019
J'ai toujours utilisé la deuxième méthode c'est à dire de comparer les DATEs (qui vous donne le nombre de jours de différence, avec une partie fractionnaire), et de la multiplier par le facteur que vous voulez pour vous donner le nombre d'heures, de minutes, de secondes, ou quoi que ce soit.
Je pense que c'est bon, et facile à lire.
OriginalL'auteur Adrian Smith
Personnellement, je trouve:
plus claire dans le but de...
pour obtenir la différence en quelques secondes.
Tom méthode prend un peu plus de frappes mais l'intention est claire.
OriginalL'auteur Nick Pierpoint
00:00:59
et00:01:00
.OriginalL'auteur imaya