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

Conversion de DateTime au format AAAA-MM-JJ dans SQL Server

Une base de données SQL Server peut stocker divers types de données, tels que des nombres, des chaînes de texte, des valeurs booléennes, des dates, etc. Cependant, le stockage et la manipulation de ces données ont leurs spécificités. L'article actuel se concentrera sur le stockage des dates dans une table de base de données SQL Server et la conversion de différents types de dates au format SQL Server AAAA-MM-JJ et vice versa.

Commençons !

AAAA-MM-JJ - le format de date dans SQL Server

Le format de données SQL Server AAAA-MM-JJ suggère que l'année est marqué par quatre chiffres, par exemple 2021. Le mois est spécifié ensuite en 2 chiffres allant de 1 à 12 - par exemple, juin serait 06. Enfin, le jour du mois est présenté en 2 chiffres, comme 20. Ainsi, la date 06 juin 2021 , sera stocké en tant que 2021-06-21. Il s'agit du format AAAA-MM-JJ pour les dates dans les bases de données SQL Server.

Dans SQL Server, vous pouvez utiliser le type de données Date ou DateTime pour stocker les dates. La différence entre les types de données Date et DateTime réside dans le niveau de détail dans lequel les deux types de données stockent les informations de date.

  • Le DateHeure le type de données stocke la date ensemble avec le temps informations en heures , minutes , et secondes .
  • La date le type de données vous permet uniquement de stocker la date informations sans les informations de temps.

L'exemple suivant illustre la différence entre les types de données Date et DateTime.

Tout d'abord, nous créons une MyDatabase factice base de données et une table (Patient ) dedans.

Le patient Le tableau comporte 5 colonnes :Id, Name, Gender, DOB (Date of Birth) et DOD (Date of Death). Le type de la colonne DOB est Date, tandis que la colonne DOD a le type de données DateTime.

CREATE DATABASE MyDatabase

USE MyDatabase
CREATE TABLE Patient

(
Id INT PRIMARY KEY IDENTITY(1,1),
Name VARCHAR (50) NOT NULL,
Gender VARCHAR (50),
DOB Date,
DOD DateTime
)

Le script suivant insère des enregistrements factices dans le Patient tableau :

INSERT INTO Patient
VALUES ('Jack', 'Male', '1960-12-15', '2017-06-30 16:30:35'),
('Sara', 'Female', '1962-01-20', '2015-02-22 10:35:55'),
('Elisa', 'Female', '1959-03-25', '2020-03-16 22:24:39'),
('Nik', 'Male', '1938-12-15', '2011-06-21 09:45:55'),
('Jos', 'Male', '1940-09-12', '2015-03-25 11:55:20')

Notez la différence entre les valeurs insérées dans la colonne DOB et la colonne DOD. La colonne DOB contient des valeurs au format AAAA-MM-JJ, mais pour la colonne DOD, vous transmettez les informations HH:MM :SS (heures :minutes :secondes).

Voyons maintenant comment notre Patient le tableau a l'air. Exécutez le script SQL suivant pour sélectionner tous les enregistrements de la table Patient :

SELECT * FROM Patient

Comment convertir DateHeure au format de date AAAA-MM-JJ dans SQL Server

Souvent, nous n'avons besoin que de la partie date à partir de la DateHeure colonne. Étant donné que les valeurs de date sont stockées dans SQL Server au format AAAA-MM-JJ par défaut, l'extraction de la partie date du type de données DateTime renvoie la date dans ce format .

Jetons un coup d'œil à un exemple. Le DOD colonne dans la colonne Patient la table stocke les valeurs dans DateTime format. Voyons comment extraire la Date partie de la colonne :

SELECT CAST(DOD AS DATE) AS DOD_Date
FROM Patient

Comme vous pouvez le voir dans le script ci-dessus, pour convertir la colonne de type DateTime en Date , vous pouvez utiliser le CAST une fonction. Vous devez passer le nom de la colonne suivi de l'AS déclaration et la DATE tapez au CAST fonction.

Voici le résultat de votre script :les valeurs de la colonne DOD sont sélectionnées et converties au format AAAA-MM-JJ.

Sélectionnons à la fois le DOD d'origine valeurs de colonne et DOD converti valeurs pour montrer la différence entre elles :

SELECT DOD as DOD, CAST(DOD AS DATE) AS DOD_Date
FROM Patient

Enfin, si vous souhaitez sélectionner toutes les colonnes de votre table et convertir une seule colonne (par exemple, convertir la colonne DOD en type Date), vous pouvez exécuter le script suivant :

SELECT t.*, CAST(DOD AS DATE) AS DOD_Date
from Patient t

Dans la sortie, vous pouvez voir toutes les colonnes du tableau ainsi que la colonne DOD_Date contenant la partie Date de la colonne DOD.

Comment convertir une chaîne au format de date SQL Server AAAA-MM-JJ

Les dates sont souvent stockées dans des formats de chaîne dans les colonnes de la table SQL Server. Vous pouvez convertir les valeurs de chaîne au format de date SQL Server AAAA-MM-JJ.

Créons une autre colonne dans notre Patient table. Le nom de la colonne est Arriv_Date (colonne factice indiquant les dates d'arrivée des patients) et le type de colonne est VARCHAR . Exécutez le script suivant pour créer cette colonne :

ALTER TABLE Patient
ADD Arriv_Date varchar(50);

Vous recevez la nouvelle Arriv_Date colonne ajoutée au Patient colonne. Pour le moment, la Arriv_Date la colonne contient NULL valeurs.

SELECT * FROM Patient

Ajoutons maintenant quelques enregistrements dans la Arriv_Date colonne. Le script suivant insère des chaînes dans différents formats de date dans cette colonne.

UPDATE Patient SET Arriv_Date = '10-Nov-2012' WHERE Id = 6
UPDATE Patient SET Arriv_Date = 'March 31, 2015' WHERE ID = 7
UPDATE Patient SET Arriv_Date = '12/02/2020' WHERE ID = 8
UPDATE Patient SET Arriv_Date = '10 October 2020' WHERE ID = 9
UPDATE Patient SET Arriv_Date = '15/10/21' WHERE ID = 10

Voyons maintenant comment les données de Arriv_Date la colonne ressemble. Exécutez le script ci-dessous :

SELECT * FROM Patient

Pour convertir toutes les chaînes dans la Arriv_Date colonne au format de date SQL Server AAAA-MM-JJ , vous pouvez à nouveau utiliser le CAST une fonction. Vous devez spécifier le nom de la colonne suivi de l'AS déclaration et la DATE saisir.

Le script suivant sélectionne la Arriv_Date d'origine colonne et les valeurs qu'elle contient qui sont converties au format de date.

Select Arriv_Date, CAST(Arriv_Date as DATE) as ARRIVAL_DATE
FROM Patient

La sortie affiche des valeurs dans différents formats de date. La colonne de type chaîne Arriv_Date est converti en AAAA-MM-JJ format dans le ARRIVAL_DATE colonne :

Comment convertir le format de date de SQL Server AAAA-MM-JJ en d'autres formats

Tout comme vous pouvez convertir d'autres formats en AAAA-MM-JJ, vous pouvez faire l'inverse. Pour convertir le AAAA-MM-JJ format de date en chaînes avec différents formats de date, vous pouvez utiliser la fonction CONVERT.

La fonction CONVERT accepte trois paramètres :le type de cible qui est VARCHAR(50) dans le script suivant, la colonne de date d'origine et le code. Le code définit à quoi ressemblera la date convertie. Ici, la valeur de code de 105 convertit la date au format JJ-MM-AAAA.

Exécutez le script pour convertir la date du format AAAA-MM-JJ en JJ-MM-AAAA :

SELECT DOB, CONVERT(varchar(50), DOB ,105) as DOB_CONV
From Patient

Voici le résultat :

Prenons un autre exemple. La valeur de code de 106 pour la date convertie convertit la date du format AAAA-MM-JJ au format JJ MON AAAA. Par exemple, dans la première colonne, la date 1960-12-15 est convertie en 12 décembre 1960.

SELECT DOB, CONVERT(varchar(50), DOB ,106) as DOB_CONV
From Patient

De même, la valeur de code 6 convertit une date au format JJ LUN AA :

SELECT DOB, CONVERT(varchar(50), DOB ,6) as DOB_CONV
From Patient

Et enfin, la valeur de code 11 convertit une date au format AAAA/MM/JJ :

SELECT DOB, CONVERT(varchar(50), DOB ,111) as DOB_CONV
From Patient

Pour voir plus de détails sur tous les différents formats de date et les codes correspondants, reportez-vous à la documentation officielle de SQL Server.

Conclusion

De cette façon, nous avons clarifié à la fois l'essence du format de date du serveur SQL AAAA-MM-JJ et les cas spécifiques de conversion des dates dans ce format et vice versa.

Nous avons appris à utiliser la fonction CAST pour convertir différents types de données, y compris DateTime et les chaînes au format AAAA-MM-JJ et la fonction CONVERT pour transformer les dates AAAA-MM-JJ en d'autres formats.

De plus, les outils modernes pour les spécialistes de SQL Server simplifient considérablement la modification des dates. Par exemple, le dbForge Studio pour SQL Server aux multiples fonctionnalités comprend, parmi le reste des options, un éditeur de données visuel pratique que vous pouvez utiliser lorsque vous travaillez avec des dates dans SQL Server.

J'espère que ces informations vous ont été utiles. Restez à l'écoute!