PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment justifier_interval() fonctionne dans PostgreSQL

Dans PostgreSQL, le justify_interval() la fonction ajuste un intervalle en utilisant justify_days et justify_hours . Il vous permet d'utiliser des ajustements de signe supplémentaires pour ajuster l'intervalle.

Syntaxe

La fonction a la syntaxe suivante :

justify_interval(interval)

interval est l'intervalle que vous voulez régler.

Exemple

Voici un exemple de base pour illustrer.

SELECT justify_interval(interval '1 mon -3 hours');

Résultat :

29 days 21:00:00

Comparaison avec justification_heures() et justification_jours()

Voici comment cela se compare à justify_hours() et justify_days() lors de l'utilisation du même argument.

\x
SELECT 
  justify_interval(interval '1 mon -3 hours'),
  justify_hours(interval '1 mon -3 hours'),
  justify_days(interval '1 mon -3 hours');

Résultat (en utilisant la sortie verticale) :

justify_interval | 29 days 21:00:00
justify_hours    | 1 mon -03:00:00
justify_days     | 1 mon -03:00:00

Dans cet exemple, j'ai utilisé \x pour passer à l'affichage étendu, qui affiche les résultats à l'aide d'une sortie verticale.

Vous trouverez ci-dessous d'autres comparaisons utilisant divers arguments.

justify_interval()

SELECT 
  justify_interval(interval '30 hours'),
  justify_interval(interval '300 hours'),
  justify_interval(interval '3000 hours'),
  justify_interval(interval '3.53 months'),
  justify_interval(interval '18 days'),
  justify_interval(interval '31 days'),
  justify_interval(interval '45 days'),
  justify_interval(interval '290 days');

Résultat (en utilisant la sortie verticale) :

justify_interval | 1 day 06:00:00
justify_interval | 12 days 12:00:00
justify_interval | 4 mons 5 days
justify_interval | 3 mons 15 days 21:36:00
justify_interval | 18 days
justify_interval | 1 mon 1 day
justify_interval | 1 mon 15 days
justify_interval | 9 mons 20 days

justify_hours()

SELECT 
  justify_hours(interval '30 hours'),
  justify_hours(interval '300 hours'),
  justify_hours(interval '3000 hours'),
  justify_hours(interval '3.53 months'),
  justify_hours(interval '18 days'),
  justify_hours(interval '31 days'),
  justify_hours(interval '45 days'),
  justify_hours(interval '290 days');

Résultat (en utilisant la sortie verticale) :

justify_hours | 1 day 06:00:00
justify_hours | 12 days 12:00:00
justify_hours | 125 days
justify_hours | 3 mons 15 days 21:36:00
justify_hours | 18 days
justify_hours | 31 days
justify_hours | 45 days
justify_hours | 290 days

justifier_jours()

SELECT 
  justify_days(interval '30 hours'),
  justify_days(interval '300 hours'),
  justify_days(interval '3000 hours'),
  justify_days(interval '3.53 months'),
  justify_days(interval '18 days'),
  justify_days(interval '31 days'),
  justify_days(interval '45 days'),
  justify_days(interval '290 days');

Résultat (en utilisant la sortie verticale) :

justify_days | 30:00:00
justify_days | 300:00:00
justify_days | 3000:00:00
justify_days | 3 mons 15 days 21:36:00
justify_days | 18 days
justify_days | 1 mon 1 day
justify_days | 1 mon 15 days
justify_days | 9 mons 20 days