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

Travailler avec des dates dans PostgreSQL


Introduction

La possibilité de stocker des valeurs de date à l'intérieur de votre base de données vous permet d'ajouter un élément de temps à vos requêtes et à l'analyse de vos données. Il est important de savoir comment utiliser les types de date dans votre base de données respective afin que vous puissiez être précis dans vos rapports, qu'il s'agisse d'informations sur les commandes, l'âge des personnes ou tout autre cas d'utilisation.

Dans ce guide, nous allons discuter du stockage de DATE types dans PostgreSQL et les différentes façons dont vous pouvez les utiliser.



PostgreSQL DATE type de données

La DATE type dans PostgreSQL peut stocker une date sans valeur d'heure associée :

DATE

PostgreSQL utilise 4 octets pour stocker une valeur de date. La plage de valeurs pour les valeurs de date dans PostgreSQL est de 4713 avant JC à 5874897 après JC.

Lors du stockage d'une valeur de date, PostgreSQL utilise le yyyy-mm-dd format par ex. 1994-10-27. Ce format est également utilisé dans PostgreSQL pour insérer des données.

Dans PostgreSQL, il est possible de définir une valeur de date par défaut de la date actuelle. Cela peut être fait lors de la création de votre table en utilisant le DEFAULT et CURRENT_DATE mots clés. Le last_checkout colonne de notre tableau des caisses de bibliothèque accepte la date actuelle par défaut :

CREATE TABLE checkouts (        author_id serial PRIMARY KEY,        author_name VARCHAR (255) NOT NULL,        book_title VARCHAR (255) NOT NULL,        published_date DATE NOT NULL,          last_checkout DATE NOT NULL DEFAULT CURRENT_DATE);

En suivant cette structure de table, nous pouvons insérer des données avec le INSERT INTO déclaration :

INSERT INTO checkouts (author_name, book_title, published_date)VALUES('James Joyce', 'Ulysses', '1922-02-02');

Ensuite, lors de l'interrogation des checkouts table, nous obtenons ce qui suit :

SELECT * FROM checkouts; author_id | author_name | book_title | published_date | last_checkout -----------+-------------+------------+----------------+---------------         1 | James Joyce |   Ulysses  |   1922-02-02   |  2021-09-27(1 row)


PostgreSQL DATE fonctions

En connaissant les tenants et les aboutissants de la DATE tapez dans PostgreSQL, vous êtes alors en mesure d'utiliser des fonctions travaillant avec les informations que vous stockez. Nous allons passer en revue certaines fonctions courantes à partir du tableau présenté dans la section précédente.


Obtenir la date actuelle

Dans PostgreSQL, vous pouvez obtenir la date et l'heure actuelles en utilisant le NOW() intégré une fonction. L'instruction suivante renverra à la fois le jour et l'heure :

SELECT NOW();              now              ------------------------------- 2021-09-27 15:22:53.679985+02(1 row)

Si l'heure ne vous intéresse pas, vous pouvez également spécifier de ne renvoyer que la date avec des doubles-points :: pour lancer un DATETIME valeur à la DATE valeur :

SELECT NOW()::date;    now     ------------ 2021-09-27(1 row)

Utilisation du CURRENT_DATE est un autre moyen d'obtenir la date actuelle, comme illustré ci-dessous :

SELECT CURRENT_DATE; current_date -------------- 2021-09-27(1 row)

Ces trois options vous renverront la date dans le yyyy-mm-dd format. Dans PostgreSQL, vous pouvez ajuster le format de cette sortie si vous le souhaitez.



Sortir une valeur de date dans un format spécifique

Pour sortir une valeur de date dans un format spécifique, vous utilisez le TO_CHAR() une fonction. Cette fonction accepte deux paramètres :

  1. la valeur que vous souhaitez formater
  2. le modèle qui définit le format de sortie
SELECT TO_CHAR(NOW()::date, 'dd/mm/yyyy');  to_char   ------------ 27/09/2021(1 row)

Vous pouvez également afficher la date dans un format tel que Sep 27, 2021 :

SELECT TO_CHAR(NOW():: DATE, 'Mon dd, yyyy');   to_char    -------------- Sep 27, 2021(1 row)

Selon les exigences d'un système, vous pouvez avoir besoin d'une date formatée d'une manière spécifique. Il s'agit d'un scénario où il est utile de pouvoir spécifier la sortie dans PostgreSQL.



Obtenir l'intervalle entre deux dates

PostgreSQL vous permet d'obtenir l'intervalle entre deux dates en utilisant le - opérateur. L'utilisation de cet opérateur vous permet de calculer des éléments tels que l'ancienneté d'un employé ou le temps écoulé depuis la publication d'un livre.

Dans notre exemple, nous voulons trouver combien de jours il s'est écoulé depuis Ulysses de Joyce a été publié en soustrayant la date actuelle de la published_date :

SELECT                author_name,                book_title,                now()::date - published_date as diffFROM                checkouts;

Résultant en :

 author_name | book_title |            diff            -------------+------------+---------------------------- James Joyce |  Ulysses   |         36397 days (1 row)


Calculer l'âge à l'aide des valeurs de date

Nous pouvons continuer avec le même exemple pour calculer l'âge à la date actuelle en années, mois et jours en utilisant le AGE() une fonction. L'instruction suivante utilise le AGE() fonction pour calculer l'âge d'une publication de notre bibliothèque checkouts tableaux :

SELECT                author_name,                book_title,                AGE(published_date)FROM                checkouts;

Avec cette fonction, nous pouvons calculer l'âge d'un livre en inventaire :

 author_name | book_title |           age           -------------+------------+------------------------- James Joyce |  Ulysses   | 99 years 7 mons 25 days(1 row)

Il est important de noter que si vous passez une seule date dans le AGE() fonction, alors il utilisera automatiquement la date actuelle pour soustraire et calculer. Vous pouvez également passer deux dates dans la fonction pour calculer l'âge, telles que :

SELECT                author_name,                book_title,                AGE('2000-01-01',published_date),FROM                checkouts;

Résultant en :

 author_name | book_title |           age            -------------+------------+-------------------------- James Joyce |  Ulysses   | 77 years 10 mons 27 days(1 row)


Extraire l'année, le trimestre, le mois, la semaine ou le jour d'une valeur de date

La dernière fonction que nous allons couvrir est le EXTRACT() fonction dans PostgreSQL qui vous permet de séparer les composants de date comme l'année, le trimestre, le mois et le jour.

La déclaration suivante extrait l'année, le mois et le jour de la date de publication d'Ulysse :

SELECT             author_name,             book_title,             EXTRACT(YEAR FROM published_date) AS YEAR,            EXTRACT(MONTH FROM published_date) AS MONTH,             EXTRACT(DAY FROM published_date) AS DAY FROM             checkouts;

Les résultats ressembleront à ce qui suit :

 author_name | book_title | year | month | day -------------+------------+------+-------+----- James Joyce |  Ulysses   | 1922 |   2   |  2(1 row)

Il s'agit d'une fonction utile pour savoir quand vous n'aurez peut-être besoin que d'une partie d'une valeur de date pour un calcul avec vos données par exemple.




Conclusion

Dans ce guide, nous avons couvert les bases de ce que vous pouvez faire avec la DATE type de données dans PostgreSQL. Il est important de savoir comment les données de date fonctionnent à l'intérieur de votre base de données. Avoir une idée des façons dont vous pouvez y accéder et l'exploiter vous permet de faire des calculs d'âge, d'exécuter des extractions dans vos requêtes et également de configurer votre sortie si nécessaire pour répondre aux exigences d'un autre système.