Comment formater la date et l'heure du serveur SQL

Comment formater la date et l'heure du serveur SQL
La manipulation des valeurs de date et d'heure à l'aide des types de données DateTime, Date et Heure est l'une des fonctionnalités les plus importantes de SQL, car ces types de données sont spécialement conçus pour stocker ces valeurs. Ils sont fréquemment utilisés dans des applications qui nécessitent le calcul et la manipulation des données de date et d'heure. Dans cet article, nous approfondirons ces types de données.

Types de données de date de base dans SQL

  • DATE: Ce type de données est utilisé pour stocker les valeurs de date au format Yyyy-mm-dd. Il est capable de représenter les dates dans la gamme du 1er janvier 0001 au 31 décembre 9999. Les valeurs de date sont stockées dans un format compact en utilisant seulement trois octets.
  • TEMPS: Le type de données de temps est utilisé pour stocker les valeurs de temps au format HH: MI: SS. Il est capable de représenter les valeurs de temps dans la plage de 00:00:00 à 23:59:59.
  • DateTime: Le type de données DateTime est capable de stocker à la fois les valeurs de date et de temps dans le format Yyyy-MM-dd HH: MI: SS. Il autorise les valeurs dans la gamme du 1er janvier 1753, 00:00:00 au 31 décembre 9999, 23:59:59. Ce type de données est utile pour stocker les horodatages tels que les temps de transaction ou les heures d'événement.
  • Petit temps: Ce type de données est le même que le type de données DateTime mais avec une différence plus petite. Il stocke à la fois les valeurs de date et de temps, mais avec une plus petite gamme de valeurs du 1er janvier 1900, 00:00:00 au 6 juin 2079, 23:59:59. Les valeurs sont également arrondies à la minute la plus proche, ce qui économise de l'espace et réduit le temps de traitement. Ce type de données est utile pour stocker une information temporelle qui ne nécessite pas de haute précision. Il ne faut que 4 octets de données. Il est stocké dans le format Yyyy-mm-dd HH: MM: SS.
  • DateTime2: Ce type de données est similaire au type de données DateTime mais avec une précision plus élevée et une plus grande portée. La plage de valeurs est la même que la datetime, mais elle peut stocker les secondes fractionnaires jusqu'à 7 chiffres.

Comment les dates sont-elles stockées dans le serveur SQL?

Dans le serveur SQL, les dates sont stockées à l'aide de deux entiers de 4 octets. L'entier initial correspond au nombre de jours précédant ou succédant à la date de base du 1er janvier 1900. Le deuxième entier correspond au nombre de 1/300e de seconde qui s'est écoulé depuis minuit. Par exemple, la date de «1er janvier 2000 12h00» est stockée comme les deux entiers - 36 529 (le nombre de jours entre le 1er janvier 1900 et le 1er janvier 2000) et 43 200 000 (le nombre de 1/300e d'une seconde depuis minuit).

Le serveur SQL fournit également un certain nombre de fonctions intégrées pour travailler avec des dates, telles que DataEadd, Datediff et Convert, qui nous permettent d'effectuer les opérations communes telles que l'ajout ou la soustraction des intervalles de temps, la comparaison des dates et la mise en forme du Rendez-vous.

Pour effectuer les requêtes SQL sur une base de données, nous utilisons généralement un outil tel que le SQL Server Management Studio (SSMS).

Création d'un [DBO].[Ordres] Tableau

Pour créer une table dans notre base de données, nous devons écrire les requêtes suivantes:

Créer une table [dbo].[ORDRES] (
[ord_number] int not null
,[ORD_DATETime] DateTime Null
,[ORD_DATE] Date nul
,[deli_datetime] DateTime null
,[last_visit_date] date nul
)

Insertion des données dans le [DBO].[Ordres] Tableau

Insérez les valeurs du tableau à l'aide de la commande suivante:

Insérer dans [dbo].[ORDERS] ([ORD_NUMBER], [ORD_DATETIME], [ORD_DATE], [Deli_DateTime], [Last_Visit_Date])
VALEURS
('1', '2021-10-01 10:30:00', '2021-10-01', '2021-10-12 10:11:10', '2021-11-01'),
('2', '2021-10-01 12:45:00', '2021-10-01', '2021-10-10 14:10:11', '2021-10-15'),
('3', '2021-10-30 13:25:00', '2021-10-30', '2021-11-05 13:22:12', '2021-12-30'),
('4', '2021-09-22 16:30:00', '2021-09-22', '2021-09-25 14:12:13', '2021-12-22'),
('5', '2021-01-10 18:15:00', '2021-01-10', '2021-02-01 11:15:14', '2022-01-10'),
('6', current_timestamp, convert (date, current_timestamp), dataeadd (day, 5, current_timestamp), dataeadd (mois, 5, current_timestamp)))

Conversion d'une date en chaîne

Si nous ramenons les valeurs DateTime du tableau, les résultats seront affichés comme «2021-10-01 10:30:00.000 ”. Mais si nous aimons le convertir en une chaîne dans notre propre format dans le code SQL, nous pouvons le faire en utilisant la fonction suivante:

SÉLECTIONNER
[ord_datetime]
,Convert (varchar (20), [ord_datetime], 22) 'order_date_string'
DEPUIS
[dbo].[ORDRES]

Sortir:

ord_datetime order_date_string
2021-10-01 10:30:00.000 10/01/21 10:30:00 AM
2021-10-01 12:45:00.000 10/01/21 12:45:00 PM
2021-10-30 13:25:00.000 10/30/21 13:25:00

Trouver une date spécifique en utilisant la clause où

Pour trouver les commandes où la date de commande est le 1er décembre 2021, nous devons suivre la requête suivante:

SÉLECTIONNER
[ORD_NUMBER]
,[ORD_DATE]
DEPUIS
[dbo].[ORDRES]

[ord_date] = '01 / 10/2021 '

Sortir:

ORD_NUMBER ORD_DATE
5 2021-01-10
5 2021-01-10

Séparer la date de l'heure

Nous pouvons également utiliser la fonction de converti à une date pour récupérer uniquement la valeur de date en spécifiant un style. Pour cela, nous utilisons la requête suivante:

Déclarer @dd en tant que DateTime
Définir @dd = '2011-07-03 20:30:40'
Sélectionnez Convert (Varchar, @dd, 103)

Sortir:

(Pas de nom de colonne)
1 03/07/2011

Obtenir la date et l'heure actuelles

Voici un exemple de requête SQL qui récupère la date et l'heure actuelles à l'aide des fonctions GetDate et Current_timestamp:

SÉLECTIONNER
AVOIR UN RENDEZ-VOUS()
,Current_timestamp

Sortir:

(Pas de nom de colonne) (pas de nom de colonne)
1 2023-03-04 23:44:02.883 2023-03-04 23:44:02.883

Trouver la différence entre deux dates

Il est souvent utile de trouver la différence entre deux dates. Avec cela, nous pouvons faire des choses comme trouver le nombre de jours entre la commande et une date de livraison.

Voici un exemple:

SÉLECTIONNER
[ORD_DATE]
,[Deli_dateTime]
,DADIFF (Day, [ORD_DATE], [Deli_dateTime]) 'Del_days'
DEPUIS
[dbo].[ORDRES]

Sortir:

ord_date deli_datetime del_days
1 2021-10-01 2021-10-12 10:11:10.000 11
2 2021-10-01 2021-10-10 14:10:11.000 9
3 2021-10-30 2021-11-05 13:22:12.000 6

Conclusion

Nous avons appris à manipuler les dates, les temps et les chaînes en utilisant les fonctions intégrées. Ces fonctions sont très pratiques pour effectuer des calculs et des transformations sur les données stockées dans les tables SQL Server. En comprenant et en utilisant ces types de données et ces fonctions efficacement, nous pouvons écrire des requêtes SQL plus efficaces et plus puissantes.