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

Explorer les formats de date Postgres et leurs différentes fonctions

Dans cet article, nous allons explorer les dates Postgres, les différents types de données de date, les utilisations et les fonctions.

Les horodatages sont utiles pour l'analyse des données et le stockage des données pour vérifier quand un événement a réellement eu lieu. Par exemple, lorsque vous avez des commandes d'achat et de vente, des revenus mensuels ou trimestriels et plus encore. Les formats de date varient d'un pays à l'autre. Cela peut donc être une tâche compliquée pour ceux qui débutent dans la gestion de bases de données et qui travaillent avec des colonnes de date. Le format ou le type de données de la colonne de date doit toujours correspondre à l'entrée de l'utilisateur. De plus, vous devez convertir l'affichage du format de date selon les besoins de votre utilisateur.

Postgres a une variété de types de données pris en charge. Avant d'aller plus loin, je vous suggère de vous référer à Explorer les différents types de données Postgres pour les comprendre plus en détail.

Type de données Postgres DATE

Postgres utilise le type de données DATE pour stocker différentes dates au format AAAA-MM-JJ. Il utilise 4 octets pour stocker une valeur de date dans une colonne.

  • Date la plus basse :4713 avant J.-C.
  • Date la plus élevée :5874897 avant JC
  • Format de date :AAAA-MM-JJ (Ex. 2021-01-01)

Vous pouvez concevoir une table Postgres avec une colonne DATE et utiliser le mot-clé DEFAULT CURRENT_DATE  pour utiliser la date système actuelle comme valeur par défaut dans cette colonne.

CREATE TABLE SalesOrders (
Order_id serial PRIMARY KEY,
Orderdetails VARCHAR (255) NOT NULL,
OrderDate DATE NOT NULL DEFAULT CURRENT_DATE
);
INSERT INTO SalesOrders (Orderdetails)
VALUES('Sample Order for customer ABC');

SELECT * FROM SalesOrders;

Comme indiqué ci-dessous, le SQL insère automatiquement une valeur pour la colonne [OrderDate] avec la date système actuelle au format AAAA-MM-JJ.

Fonctions DATE Postgres

Nous devons souvent modifier le format de date ou effectuer des calculs sur des valeurs existantes stockées dans la table Postgres. Par exemple, en Inde, le format de date habituel est JJ-MM-AAAA. Par conséquent, lorsqu'un utilisateur indien visualise les données, nous voudrons probablement qu'il visualise les données dans le format qui lui est le plus familier. Dans ce cas, les fonctions SQL jouent un rôle essentiel.

Fonction TO_CHAR()

Cette fonction est utile pour donner la sortie d'une valeur de date Postgres dans un format spécifié. Il accepte les deux paramètres suivants.

  • Date d'entrée :il s'agit de la date que vous souhaitez convertir dans un format spécifique.
  • Format de date :c'est ici que vous spécifiez le nouveau format de date.

La requête suivante convertit les valeurs de date existantes stockées dans la table [SalesOrders] au format JJ-MM-AAAA.

SELECT Orderdetails,OrderDate as ExistingDateformat,
to_char(OrderDate,'DD-MM-YYYY') As NewDateFormat FROM SalesOrders;

Les valeurs prises en charge dans la fonction to_char() sont indiquées ci-dessous.

AAAA Année en quatre chiffres
AAAA Trois derniers chiffres d'une année
AA Deux derniers chiffres d'une année
MOIS Nom du mois en majuscules
Mois Nom du mois avec la première lettre en majuscule
mois Nom du mois en lettres minuscules
Lun/Lun/Lun Abréviation du mois en majuscule, première lettre en majuscule et minuscule, respectivement
MM Numéro du mois (01-12)
JOUR/Jour/jour Nom du jour en majuscule, première lettre en majuscule et toutes en minuscules, respectivement
DDD Jour de l'année (001 à 366)
JJ Jour du mois (01 à 31)
D Jour de la semaine (du dimanche (1) au samedi (7))
L Semaine du mois
WW Semaine de l'année

Quelques exemples de différents formats de date sont spécifiés dans le SQL suivant.

SELECT Orderdetails,OrderDate as ExistingDateformat,
to_char(OrderDate,'DD-MM-YYYY') As DDMMYYYY,
to_char(OrderDate,'DD-MM-YY') As DDMMYY,
to_char(OrderDate,'DD.MM.YY') As "DD.MM.YY",
to_char(OrderDate,'MM/DD/YYYY') As "MM/DD/YYYY",
to_char(OrderDate,'DAY MM/DD/YYYY') As "MM/DD/YYYY",
to_char(OrderDate,'DDD MM/DD/YYYY') As "DDD MM/DD/YYYY"
FROM SalesOrders

Fonction Now()

La fonction Now() renvoie l'horodatage actuel du système (date et heure).

Vous pouvez spécifier des doubles-virgules (::) pour convertir une valeur DATETIME en une valeur DATE.

Vous pouvez combiner TO_CHAR() et la fonction Now() pour convertir l'horodatage actuel au format spécifié.

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

Opérateur moins et intervalle

Vous pouvez utiliser l'opérateur moins (-) pour calculer la différence entre deux dates. Par exemple, la requête ci-dessous renvoie l'intervalle entre l'horodatage actuel et [Orderdate] de la table SalesOrders.

SELECT Orderdate,now() as currentdate,
now()-Orderdate as Interval FROM SalesOrders
where order_id=2;

Vous pouvez également spécifier un intervalle pour renvoyer la date après une période spécifiée. Par exemple, la requête SQL ci-dessous donne les valeurs suivantes.

  • Pour une date future, spécifiez une valeur d'intervalle de 2 heures à partir de l'horodatage actuel : maintenant() + intervalle "2 heures"
  • Pour une date future, spécifiez une valeur d'intervalle de 1 jour à partir de l'horodatage actuel : maintenant() + intervalle "1 jour"
  • Pour une date passée, spécifiez la valeur d'un intervalle d'un an à partir de l'horodatage actuel : Maintenant() – intervalle "1 an"
  • Calculez un an après la date à partir de la valeur stockée dans la colonne [Orderdate] : orderdate - intervalle "1 an"
SELECT (NOW() + interval '2 hour') AS twohourslater,
(NOW() + interval '1 day') AS Onedaylater,
(NOW() - interval '1 year') AS OneYearBefore,
(Orderdate- interval '1 year') as Orderdatedifference
from salesorders;

Fonction AGE()

La fonction AGE() renvoie la différence de date en années, mois et jours. Vous pouvez utiliser cette fonction pour calculer l'âge d'une personne.

Cette fonction accepte deux paramètres de date et soustrait la première valeur de date de la seconde.

Si vous inversez les valeurs dans le script de fonction ci-dessus, il renvoie la valeur dans le négatif.

Dans un autre exemple, disons que quelqu'un a pour date de naissance le 1990-07-01. Par conséquent, l'âge d'une personne peut être calculé comme ci-dessous.

SELECT current_date,
AGE(timestamp '1990-07-01') as EmpAge;

Fonction EXTRAIRE()

La fonction Extract() renvoie le jour, la semaine, le mois, l'année et le trimestre à partir de la valeur de date spécifiée.

Extraire un an

SELECT EXTRACT(YEAR FROM TIMESTAMP '2021-06-28 10:30:15') as year;

Extraire un mois

SELECT EXTRACT(Month FROM TIMESTAMP '2021-06-28 10:30:15') as Month;

Extraire un quart

SELECT EXTRACT(QUARTER FROM TIMESTAMP '2021-06-28 10:30:15') as QUARTER;

Extraire le jour de la semaine

SELECT EXTRACT(DOW FROM TIMESTAMP '2021-06-28 10:30:15') as DOW ;

Extraire le jour de l'année

SELECT EXTRACT(DOY FROM TIMESTAMP '2021-06-28 10:30:15') as DOY ;

Vous pouvez également utiliser la fonction EXTRACT() en combinaison avec un INTERVAL. Par exemple, ci-dessous, nous spécifions l'intervalle de 7 ans 9 mois 20 jours 09 heures 12 minutes et 13 secondes. La fonction d'extraction renvoie les valeurs individuelles.

SELECT EXTRACT(YEAR
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(Month
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(Day
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(hour
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(Minute
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' );
;

AU FUSEAU HORAIRE

Parfois, vous devez convertir l'horodatage dans un fuseau horaire différent. Par exemple, vous pouvez stocker les valeurs de date en UTC (coordinateur de temps universel) et convertir le fuseau horaire selon vos besoins.

SELECT * FROM pg_timezone_names;

Pour vérifier le fuseau horaire actuel, utilisez SHOW TIMEZONE comme indiqué ci-dessous.

Vous pouvez choisir la valeur de fuseau horaire requise dans pg_timezone_names et utiliser AT TIME ZONE pour obtenir la sortie selon le fuseau horaire spécifié.

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'America/Chicago';

De même, nous pouvons obtenir différentes sorties de fuseau horaire en utilisant AT TIME ZONE.

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'America/New_York';

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'Asia/Qatar';

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'Europe/Istanbul';

Résumé

Les types de date Postgres sont essentiels et précieux lors du stockage de la date et de l'horodatage dans presque toutes les tables d'une base de données relationnelle. Vous en avez besoin à diverses fins, telles que l'insertion de commandes ou la mise à jour de l'horodatage, des commandes d'achat et de vente, des détails sur les événements, des informations sur les clients et les employés, etc. Vous pouvez utiliser plusieurs fonctions Postgres pour convertir un type de date dans le fuseau horaire, le format et les informations spécifiques requis pour simplifier l'extraction et l'analyse de vos données.