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

Comprendre les types et les fonctions de date PostgreSQL (par des exemples)

Dans cet article, nous examinerons l'utilisation des dates dans PostgreSQL, y compris les différents types et formats de données de date, leurs fonctions et la manière de les gérer dans votre routine quotidienne. Nous utiliserons dbForge Studio pour PostgreSQL pour illustrer les exemples.

Vous pouvez utiliser des dates et des horodatages pour l'analyse et le stockage des données, car ils vous permettent de déterminer quand un événement s'est réellement produit. La difficulté avec les dates est que leurs formats varient d'un pays à l'autre, ce qui peut être une tâche assez difficile pour les débutants en gestion de bases de données. Le type de données et le format de la colonne de date doivent toujours être cohérents avec les informations saisies par l'utilisateur. De plus, vous devez modifier le format de la date pour répondre aux préférences de vos utilisateurs. Postgres est capable de gérer un large éventail de formats de données.

Contenu

  • Présentation du type de données PostgreSQL DATE
  • Utilisation de la date actuelle comme valeur par défaut
  • Fonctions DATE Postgres
  • Utiliser la fonction NOW() pour obtenir la date actuelle
  • À l'aide de la fonction TO_CHAR() - affichez la valeur de date dans un format spécifié
  • Utiliser l'opérateur moins pour obtenir l'intervalle entre deux dates
  • Utilisation de la fonction AGE() pour obtenir la différence de date en années, mois et jours
  • Utiliser la fonction EXTRACT() pour obtenir l'année, le trimestre, le mois, la semaine, le jour à partir d'une valeur de date
  • Utiliser TO_TIMESTAMP() pour convertir une chaîne en horodatage
  • Résumé

Présentation du type de données PostgreSQL DATE

DATE Le type de données dans PostgreSQL est utilisé pour stocker les dates au format AAAA-MM-JJ (par exemple, 2022-03-24). Il a besoin de 4 octets pour stocker une valeur de date dans une colonne. Notez que la première date possible est 4713 avant JC et la dernière date possible est 5874897 après JC.

Il est très important de conserver la lisibilité du code au stade de son écriture. dbForge Studio pour PostgreSQL peut se vanter d'avoir un formateur PostgreSQL pratique et intuitif. Prenant soin du formatage du code, de la vérification de la syntaxe et de la complétion du code, la fonction de formatage Postgres SQL intégrée dbForge Studio pour PostgreSQL vous permettra également de rester concentré sur le traitement du type de données DATE.

Utiliser la date actuelle comme valeur par défaut

La valeur par défaut dans une DATE colonne dans une base de données Postgres peut être définie en utilisant le mot-clé DEFAULT CURRENT DATE , comme dans le script ci-dessous :

CREATE TABLE myevents (
event_id serial PRIMARY KEY,
event_details VARCHAR (255) NOT NULL,
event_date DATE NOT NULL DEFAULT CURRENT_DATE
);
INSERT INTO myevents (event_details)
VALUES('Meeting the client ABC');
 
SELECT * FROM myevents;

Comme vous pouvez le voir, une valeur pour [date de l'événement] est automatiquement insérée par le serveur PostgreSQL, en utilisant la date système actuelle au format AAAA-MM-JJ.

Fonctions DATE Postgres

Parfois, il est essentiel de modifier le format de date ou de calculer les valeurs dans la table PostgreSQL. Nous pourrions avoir besoin de le faire pour les utilisateurs de différents fuseaux horaires partout dans le monde. Dans ce cas, les fonctions SQL sont cruciales.

Utiliser la fonction NOW() pour obtenir la date actuelle

SELECT now();

Vous pouvez utiliser des doubles-virgules (::) pour lancer un DATETIME valeur à une DATE valeur comme indiqué ci-dessous :

L'horodatage actuel du système est renvoyé par NOW() une fonction. La syntaxe est la suivante :

SELECT now()::date;

Utilisation de la fonction TO_CHAR() - sortie de la valeur de date dans un format spécifié

Pour présenter la sortie d'une valeur de date Postgres dans un format spécifié, le TO_CHAR() la fonction est pratique. La syntaxe est la suivante :

TO_CHAR(expression, format)

Il y a deux paramètres acceptés par le TO_CHAR() fonction :

  • Date d'entrée :La date à convertir dans un format spécifique.
  • Format de date  :L'espace réservé pour une nouvelle spécification de format de date.

Voyons comment convertir les valeurs de date existantes à partir de [MyEvents] tableau au format JJ-MM-AAAA.

SELECT event_details,event_date as ExistingDateformat,
to_char(event_date,'DD-MM-YYYY') As NewDateFormat FROM myevents;

Pour convertir l'horodatage actuel dans le format préféré, vous pouvez fusionner le TO_CHAR() et le NOW() fonctions.

SELECT TO_CHAR(NOW() :: DATE, 'dd-mm-yyyy');

Utiliser l'opérateur moins pour obtenir l'intervalle entre deux dates

Pour calculer la différence entre deux dates, utilisez l'opérateur moins (-). La requête ci-dessous fournit la période entre l'horodatage actuel et [eventdate] depuis MesÉvénements table.

SELECT event_date,now() as currentdate,
now()-event_date as Interval FROM myevents
where event_id=2;

Vous pouvez également sélectionner un intervalle pour que la date soit renvoyée lorsqu'un certain laps de temps s'est écoulé. Jetez un œil à la requête ci-dessous :

SELECT (NOW() + interval '3 hour') AS threehourslater,
(NOW() + interval '2 day') AS Twodaylater,
(NOW() - interval '2 year') AS TwoYearBefore,
(event_date- interval '1 year') as eventdatedifference
from myevents;

Utiliser la fonction AGE() pour obtenir la différence de date en années, mois et jours

Avec le AGE() fonction, vous pouvez obtenir la différence de date en années, mois et jours. Cette fonction peut être utilisée pour déterminer l'âge d'une personne. La première valeur de date est soustraite de la deuxième valeur de date avec cette fonction, qui accepte deux entrées de date. Lorsque les valeurs du script de fonction sont inversées, le résultat est une valeur négative.

Découvrons l'âge de la personne dont la date de naissance est le 1995-10-09. La syntaxe est la suivante :

SELECT current_date,
AGE(timestamp '1995-10-09'::timestamp) as EmpAge;

Utiliser la fonction EXTRACT() pour obtenir l'année, le trimestre, le mois, la semaine, le jour à partir d'une valeur de date

Le EXTRACT() renvoie un jour, une semaine, un mois, une année et un trimestre à partir de la valeur de date spécifiée.

Extraire une année :

SELECT EXTRACT(YEAR FROM TIMESTAMP '2022-04-09 10:30:15') as year;

Extraire un mois :

SELECT EXTRACT(Month FROM TIMESTAMP '2022-04-09 10:30:15') as Month;

Extraire un quart :

SELECT EXTRACT(QUARTER FROM TIMESTAMP '2022-04-09 10:30:15') as QUARTER;

Extraire le jour de la semaine :

SELECT EXTRACT(DOW FROM TIMESTAMP '2022-04-09 10:30:15') as DOW;

Extraire le jour de l'année :

SELECT EXTRACT(DOY FROM TIMESTAMP '2022-04-09 10:30:15') as DOY;

Notez que dbForge Studio affiche les résultats d'exécution de la requête chacun dans un onglet séparé.

Le EXTRACT() la fonction peut être facilement combinée avec INTERVAL . Supposons que nous voulions définir l'intervalle sur 5 ans 8 mois 23 jours 08 heures 10 minutes et 20 secondes. Les valeurs individuelles sont renvoyées par le EXTRACT fonction.

SELECT EXTRACT(YEAR
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Month
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Day
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(hour
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Minute
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' );

Utiliser TO_TIMESTAMP() pour convertir une chaîne en horodatage

Vous pouvez conserver les valeurs de date en UTC (coordinateur de temps universel) et modifier le fuseau horaire si nécessaire si vous souhaitez convertir l'horodatage dans un fuseau horaire différent.

SELECT * FROM pg_timezone_names;

Pour vérifier le fuseau horaire actuel, utilisez le SHOW TIMEZONE commande.

Vous pouvez utiliser AT TIME ZONE pour recevoir la sortie pour le fuseau horaire choisi en sélectionnant la valeur de fuseau horaire nécessaire dans pg_timezone_names tableau.

SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Los_Angeles';

AT TIME ZONE vous permet d'avoir différentes sorties de fuseau horaire.

SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Washington';
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'Asia/Beijing';
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'Europe/Kyiv';

Résumé

Pour résumer, la DATE PostgreSQL Le type de données est très important et utile lors du stockage des dates et des horodatages dans les tables, il est donc assez courant dans une base de données relationnelle. La gamme de leur utilisation est incroyablement large, c'est pourquoi il est si important de les rendre clairs pour tout utilisateur dans n'importe quel pays et fuseau horaire. Avec diverses fonctions Postgres, il est facile de répondre aux besoins des utilisateurs, car vous pouvez modifier les dates afin qu'elles puissent être utilisées dans un fuseau horaire spécifique, avec un certain format et d'autres détails qui facilitent beaucoup le travail avec ces données. Enfin, si vous recherchez une combinaison parfaite d'une interface graphique intuitive et d'une ligne de commande augmentée permettant de travailler avec la DATE type de données encore plus agréable, dbForge Studio pour PostgreSQL vous sera utile.