Dis que j'ai un intervalle comme
4 days 10:00:00
dans postgres. Comment puis-je convertir cela en un nombre d'heures (106 dans ce cas?) Y a-t-il une fonction ou devrais-je mordre la balle et faire quelque chose comme
extract(days, my_interval) * 24 + extract(hours, my_interval)
datetime
postgresql
intervals
agnul
la source
la source
Réponses:
Le moyen le plus simple est probablement:
la source
Si vous voulez un nombre entier, c'est-à-dire le nombre de jours:
la source
SELECT extract('epoch' FROM age('2014-08-02'::timestamp)) / 86400
(j'utilise Pg 9.4), carage(ts)
utiliser automatiquementCURRENT_DATE
quand un seul argument.Pour obtenir le nombre de jours, le moyen le plus simple serait:
Autant que je sache, il renverrait le même que:
la source
'1 month 0 days'
, utiliserextract(day from …)
vous donnera0
comme résultat.La
::int
conversion suit le principe de l'arrondi. Si vous voulez un résultat différent, comme un arrondi vers le bas, vous pouvez utiliser la fonction mathématique correspondante telle quefloor
.la source
Si vous convertissez un champ de table:
Définissez le champ pour qu'il contienne des secondes:
Extrayez la valeur. N'oubliez pas de lancer int autrement vous pouvez avoir une mauvaise surprise une fois que les intervalles sont grands:
EXTRACT(EPOCH FROM field)::int
la source
Voici la requête simple qui calcule le nombre total de jours.
la source