Un database SQL Server può archiviare una varietà di tipi di dati, ad esempio numeri, stringhe di testo, valori booleani, date e così via. Tuttavia, l'archiviazione e la gestione di tali dati hanno le loro specificità. L'articolo corrente si concentrerà sull'archiviazione delle date in una tabella di database di SQL Server e sulla conversione di diversi tipi di date nel formato di SQL Server AAAA-MM-GG e viceversa.
Iniziamo!
AAAA-MM-GG:il formato della data in SQL Server
Il formato dati AAAA-MM-GG di SQL Server suggerisce che l'anno è contrassegnato da quattro cifre, ad esempio 2021. Il mese viene specificato successivamente in 2 cifre comprese tra 1 e 12, ad esempio giugno sarebbe 06. Infine, il giorno del mese è presentato in 2 cifre, ad esempio 20. Pertanto, la data 06 giugno 2021 , sarà memorizzato come 2021-06-21. È il formato AAAA-MM-GG per le date nei database di SQL Server.
In SQL Server è possibile utilizzare il tipo di dati Date o DateTime per archiviare le date. La differenza tra i tipi di dati Date e DateTime risiede nel livello di dettaglio in cui entrambi i tipi di dati memorizzano le informazioni sulla data.
- Il DataOra il tipo di dati memorizza la data insieme con il tempo informazioni in ore , minuti e secondi .
- La Data il tipo di dati consente solo di memorizzare la data informazioni senza le informazioni sull'ora.
L'esempio seguente mostra la differenza tra i tipi di dati Date e DateTime.
Innanzitutto, stiamo creando un MyDatabase fittizio database e una tabella (Paziente ) in esso.
Il Paziente la tabella ha 5 colonne:Id, Nome, Sesso, DOB (data di nascita) e DOD (data di morte). Il tipo della colonna DOB è Date, mentre la colonna DOD ha il tipo di dati 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
)
Lo script seguente inserisce alcuni record fittizi nel Paziente tabella:
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')
Notare la differenza tra i valori inseriti nella colonna DOB e la colonna DOD. La colonna Data di nascita ha valori nel formato AAAA-MM-GG, ma per la colonna DOD si passano le informazioni HH:MM:SS (ore:minuti:secondi).
Vediamo ora come funziona il nostro Paziente sguardi da tavola. Eseguire il seguente script SQL per selezionare tutti i record dalla tabella Paziente:
SELECT * FROM Patient
Come convertire DateTime in formato data AAAA-MM-GG in SQL Server
Spesso abbiamo bisogno solo della parte della data dalla DataOra colonna. Poiché i valori della data sono archiviati in SQL Server nel formato AAAA-MM-GG per impostazione predefinita, estraendo la parte della data dal tipo di dati DateTime viene restituita la data in questo formato .
Diamo un'occhiata a un esempio. Il DOD colonna nel Paziente la tabella memorizza i valori in DateTime formato. Vediamo come estrarre la Data parte dalla colonna:
SELECT CAST(DOD AS DATE) AS DOD_Date
FROM Patient
Come puoi vedere dallo script sopra, per convertire la colonna del tipo DateTime in Date , puoi utilizzare il CAST funzione. Devi passare il nome della colonna seguito da AS dichiarazione e la DATE digita su CAST funzione.
Ecco il risultato del tuo script:i valori della colonna DOD vengono selezionati e convertiti nel formato AAAA-MM-GG.
Selezioniamo entrambi i DOD originali valori di colonna e DOD convertito valori per dimostrare la differenza tra loro:
SELECT DOD as DOD, CAST(DOD AS DATE) AS DOD_Date
FROM Patient
Infine, se desideri selezionare tutte le colonne della tabella e trasmettere solo una singola colonna (ad esempio, convertire la colonna DOD in tipo Data), puoi eseguire il seguente script:
SELECT t.*, CAST(DOD AS DATE) AS DOD_Date
from Patient t
Nell'output, puoi vedere tutte le colonne della tabella insieme alla colonna DOD_Date contenente la parte Data dalla colonna DOD.
Come convertire una stringa nel formato data di SQL Server AAAA-MM-GG
Le date vengono spesso archiviate in formati stringa nelle colonne della tabella di SQL Server. È possibile convertire i valori della stringa nel formato data di SQL Server AAAA-MM-GG.
Creiamo un'altra colonna nel nostro Paziente tavolo. Il nome della colonna è Arriv_Date (colonna fittizia che mostra le date di arrivo dei pazienti) e il tipo di colonna è VARCHAR . Esegui il seguente script per creare questa colonna:
ALTER TABLE Patient
ADD Arriv_Date varchar(50);
Ricevi la nuova Arriv_Date colonna aggiunta al Paziente colonna. Al momento, la Arriv_Date la colonna contiene NULL valori.
SELECT * FROM Patient
Aggiungiamo ora alcuni record in Arriv_Date colonna. Lo script seguente inserisce stringhe in vari formati di data in questa colonna.
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
Ora, vediamo come funzionano i dati nella Arriv_Date la colonna sembra. Esegui lo script seguente:
SELECT * FROM Patient
Per convertire tutte le stringhe in Arriv_Date colonna nel formato della data di SQL Server AAAA-MM-GG , puoi nuovamente utilizzare il CAST funzione. Devi specificare il nome della colonna seguito da AS dichiarazione e la DATE digitare.
Lo script seguente seleziona la Arriv_Date originale colonna e i valori in essa contenuti che vengono convertiti in formato data.
Select Arriv_Date, CAST(Arriv_Date as DATE) as ARRIVAL_DATE
FROM Patient
L'output mostra i valori in diversi formati di data. La colonna del tipo di stringa Arriv_Date viene convertito nel AAAA-MM-GG formato nel ARRIVAL_DATE colonna:
Come convertire il formato data di SQL Server AAAA-MM-GG in altri formati
Proprio come puoi convertire altri formati in AAAA-MM-GG, puoi fare il contrario. Per convertire il AAAA-MM-GG formato data in stringhe con diversi formati di data, puoi usare la funzione CONVERTI.
La funzione CONVERT accetta tre parametri:il tipo di destinazione che è VARCHAR(50) nello script seguente, la colonna della data originale e il codice. Il codice definisce come apparirà la data convertita. Qui il valore del codice 105 converte la data nel formato GG-MM-AAAA.
Esegui lo script per convertire la data dal formato AAAA-MM-GG a GG-MM-AAAA:
SELECT DOB, CONVERT(varchar(50), DOB ,105) as DOB_CONV
From Patient
Ecco l'output:
Facciamo un altro esempio. Il valore del codice 106 per la data convertita converte la data dal formato AAAA-MM-GG al formato GG LUN AAAA. Ad esempio, nella prima colonna, la data 1960-12-15 viene convertita in 12 dicembre 1960.
SELECT DOB, CONVERT(varchar(50), DOB ,106) as DOB_CONV
From Patient
Allo stesso modo, il valore del codice 6 converte una data nel formato DD MON YY:
SELECT DOB, CONVERT(varchar(50), DOB ,6) as DOB_CONV
From Patient
Infine, il valore del codice 11 converte una data nel formato AAAA/MM/GG:
SELECT DOB, CONVERT(varchar(50), DOB ,111) as DOB_CONV
From Patient
Per ulteriori dettagli su tutti i vari formati di data e codici corrispondenti, fare riferimento alla documentazione ufficiale di SQL Server.
Conclusione
In questo modo, abbiamo chiarito sia l'essenza del formato della data del server SQL AAAA-MM-GG sia i casi specifici di conversione delle date in questo formato e viceversa.
Abbiamo imparato a utilizzare la funzione CAST per convertire diversi tipi di dati tra cui DateTime e stringhe nel formato AAAA-MM-GG e la funzione CONVERT per trasformare le date AAAA-MM-GG in altri formati.
Inoltre, i moderni strumenti per gli specialisti di SQL Server rendono molto più semplici i lavori di modifica delle date. Ad esempio, il multifunzionale dbForge Studio per SQL Server include, tra le altre opzioni, un pratico editor di dati visivi che puoi utilizzare quando lavori con le date in SQL Server.
Spero che queste informazioni ti siano state utili. Rimani sintonizzato!