Le calcul de la différence entre deux dates à l'aide de l'âge et de l'extrait donne des résultats différents dans Postgresql
Je suis en utilisant Postgresql (sur Amazon Redshift), et j'ai besoin de calculer la différence entre deux dates, et ensuite utiliser cette valeur dans une formule pour calculer un rapport, si la date de la différence doit être traduit en une valeur numérique, de préférence un float ou double précision.
J'ai deux dates: 1/1/2017 et 1/1/2014. J'ai besoin de trouver la différence entre ces deux dates en nombre de jours.
Lorsque j'utilise la fonction age je obtenir 1080 jours:
select age('2017-01-01','2014-01-01')
Cependant, depuis l'âge de renvoie un intervalle et j'ai besoin de travailler avec un résultat numérique, je suis à l'aide d'EXTRAIRE de convertir la valeur finale. J'ai choisi à l'époque parce que je n'ai pas pu trouver une autre valeur pour l'EXTRAIT qui donnerait le nombre d'unités de temps entre les deux dates. Cette formule calcule 1095.75 jours (le diviseur est le nombre de secondes dans une journée):
select extract(epoch from age('2017-01-01','2014-01-01'))/86400
Pourquoi suis-je une différence de 19,75 jours lors de l'utilisation de l'âge de vs à l'aide de l'extrait?
Vous devez vous connecter pour publier un commentaire.
1080 est le chiffre que vous obtiendriez si chaque mois est de 30 jours (36 mois de 30 jours est égal à 1080), comme ce serait le cas si vous avez utilisé
justify_days
(soit explicitement, ou si le SGBD appelé implicitement). Vous ne dites pas comment vous obtenez cette 1080 figure depuis je crois la durée normalement il suffit d'imprimer quelque chose comme3 years
, mais qui semble la plus probable en cas1095.75 semble le plus correct figure, en cours de 365.25 jours multiplié par trois ans.
De ces deux, je voudrais aller avec la méthode de ce dernier.
Bien que, comme l'a souligné à http://www.postgresql.org/docs/8.1/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT, le calcul de la différence entre les deux types date devrait donner le nombre de jours:
Avez-vous essayé
La différence entre les deux
date
s est le nombre de jours en entierRedshift notes de dire qu'ils ont récemment publié un mois entre la fonction qui ressemble à des oracles mois entre la fonction si c'est ce que vous cherchez. http://docs.aws.amazon.com/redshift/latest/dg/r_MONTHS_BETWEEN_function.html