Accéder au contenu principal
Documents
Gestion des tableaux et des schémasSyntaxe de baseDéclencheursBases de donnéesFonctions de la dateFonctions des chaînes de caractèresFonctions mathématiquesFonctions JSONIndexes

PostgreSQL DATE_TRUNC

La fonction `DATE_TRUNC` de PostgreSQL est utilisée pour tronquer une date ou un timestamp à une précision spécifiée, comme l'heure, le jour ou le mois. Elle est utile dans les scénarios où vous devez agréger des données sur des intervalles de temps spécifiques.

Utilisation

La fonction `DATE_TRUNC` est utilisée lorsque vous avez besoin d'aligner des dates et des horodatages à un niveau de précision particulier pour l'analyse ou le reporting. Elle est souvent utilisée avec les fonctions d'agrégation pour résumer les données sur des périodes déterminées.

sql
DATE_TRUNC('precision', source_date)

Dans cette syntaxe, `'precision'' spécifie le niveau auquel la date sera tronquée (par exemple, 'hour', 'day'), et `source_date' est la date ou l'horodatage à tronquer. La `source_date` peut être une colonne d'un tableau ou toute expression qui donne une date ou un horodatage.

Options de précision

PostgreSQL prend en charge différents niveaux de précision pour la troncature, y compris :

  • `second`
  • `minute`
  • `hour` (heure)
  • `jour`
  • `semaine`
  • `mois`
  • `quarter`
  • `année`
  • `decade`
  • `siècle`
  • `millennium`

Exemples

1. Tronquer au jour près

sql
SELECT DATE_TRUNC('day', TIMESTAMP '2023-10-04 15:23:45');

Cet exemple tronque l'horodatage au début de la journée, ce qui donne `2023-10-04 00:00:00`. Si la date source est déjà à la précision spécifiée, comme `2023-10-04 00:00:00`, le résultat reste inchangé.

2. Tronquer au mois

sql
SELECT DATE_TRUNC('month', TIMESTAMP '2023-10-04 15:23:45');

Ici, l'horodatage est tronqué au début du mois, ce qui donne `2023-10-01 00:00:00`.

3. Tronquer pour l'agrégation

sql
SELECT DATE_TRUNC('week', order_date) AS week_start, COUNT(*)
FROM orders
GROUP BY week_start;

Cet exemple tronque `order_date` au début de chaque semaine pour regrouper les commandes par intervalles hebdomadaires et fournir un décompte des commandes par semaine.

Conseils et bonnes pratiques

  • Choisissez la bonne précision. Sélectionnez le niveau de précision qui correspond à vos besoins en matière d'analyse de données, par exemple "jour" pour les résumés quotidiens ou "mois" pour les tendances mensuelles.
  • Combiner avec des agrégats. Utilisez `DATE_TRUNC` avec des fonctions d'agrégation comme `COUNT`, `SUM`, ou `AVG` pour effectuer des analyses de données basées sur le temps.
  • Tenez compte des fuseaux horaires. Veillez à ce que vos horodatages soient dans le bon fuseau horaire pour éviter les inexactitudes lors de la troncature. Utilisez `AT TIME ZONE` pour une gestion explicite des fuseaux horaires, par exemple, `DATE_TRUNC('day', timestamp_column AT TIME ZONE 'UTC')`.
  • Optimiser les performances. La troncature de grands ensembles de données peut être gourmande en ressources ; envisagez d'indexer vos colonnes de dates avec un index B-tree pour améliorer les performances des requêtes.