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 :
- la valeur que vous souhaitez formater
- 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.