formato data SQL come DateDiff La funzione SQL e la funzione SQL DateAdd sono spesso utilizzate dai DBA, ma molti di noi non si sono mai presi il tempo per comprendere appieno queste funzionalità estremamente utili. Per i professionisti che hanno appena iniziato con SQL Server, queste funzioni sono tra le prime a familiarizzare. Quindi si spera che questo articolo abbia qualcosa per tutti in tutto lo spettro delle abilità
Uno dei tipi di dati più interessanti supportati nel mondo dei database relazionali è DateTime. In questo articolo, esamineremo come lavorare con i tipi di dati di data e ora in SQL Server. Comprenderemo le basi del tipo di dati data-ora e inoltre, vedremo vari esempi di come interrogare i campi data-ora utilizzando le funzioni integrate in SQL Server per manipolare i dati, trasformare i valori data-ora e in alcuni casi, eseguire operazioni aritmetiche.
Per prima cosa, diamo unocchiata ad alcuni popolari formati di data SQL e funzioni dellora.
Per impostazione predefinita, SQL Server supporta intrinsecamente i linguaggi supportati dal sistema operativo Windows. A seconda delle impostazioni internazionali e delle regole di confronto quando si esegue linstallazione di SQL Server, la visualizzazione del formato della data SQL potrebbe essere diversa. Il tipo di dati che intendi riprodurre è determinato in base alle impostazioni locali e alle impostazioni di confronto di SQL Server.
In SQL Server, il tipo di dati DATE ha due formati di linguaggio neutri predefiniti
-
“AAAAMMGG”
Lesempio seguente, HumanResource Viene eseguita una query sulla tabella .Employee per vedere il formato della data SQL dei valori HireDate
123456USE AdventureWorks2014;VAISELEZIONA HireDate, BusinessEntityID, LoginID, JobTitleFROM HumanResources.Employee;VAIOra, interroga la colonna HireDate utilizzando un formato in lingua neutra. Nella query, stiamo passando un valore intero che consiste nellanno 2008; mese, 12 e 7 ° giorno.
123SELEZIONA HireDate, BusinessEntityID, LoginID, JobTitleFROM HumanResources.EmployeeWHERE HireDate = “20081207”;Nota: sostanzialmente significa che il valore di input è numerico; il motore SQL lo converte internamente e in realtà finisce con un valore di carattere. Quindi, è racchiuso tra virgolette singole
-
“MM-GG-AAAA” (formato USA)
In questo formato di data SQL, il La colonna HireDate viene alimentata con i valori “MM-GG-AAAA”. Questo non è un formato intero. Eseguiamo la stessa query con il nuovo formato di data SQL del valore di input “12 -07-2008” nella colonna HireDate. Quindi eseguiamo la seguente query e verifichiamo loutput. Loutput è lo stesso insieme di cinque record.
1234SELEZIONA HireDate, BusinessEntityID, LoginID, JobTitleFROM HumanResources.EmployeeWHERE HireDate = “12-07-2008”;VAINota: i valori di formato della lingua neutri sono impliciti e SQL Server eseguirà la conversione necessaria. Qualsiasi altro formato di data SQL richiede una corretta conversione di operandi e / e valori.
I seguenti esempi visualizzano un messaggio di errore a causa delluso improprio del formato di data SQL.
1
2
3
|
SELEZIONA HireDate, BusinessEntityID, LoginID, JobTitle
FROM HumanResources.Employee
WHERE HireDate = “25-12-2008 “;
|
Ora, loperando e i suoi valori sono entrambi convertiti in un formato standard 103. È possibile fare riferimento qui per ulteriori informazioni sulle funzioni CAST e Convert.Lesempio seguente restituisce tutte le righe dellimpiegato in cui HireDate 25 -12-2008
Ora andiamo inizia a dare unocchiata ad alcune delle funzioni di data che SQL Server ci mette a disposizione e queste funzioni di data ci consentono di lavorare con le diverse parti delle date e persino di manipolare alcune delle funzionalità con cui possiamo lavorare in termini di date.
Diamo unocchiata alla funzione SQL DATEPART. Questa funzione restituisce un valore intero dalla colonna della data specificata
Interroga la colonna HireDate per restituire solo la parte dellanno della data
Lesempio seguente genera una colonna di output intera denominata, e questa dovrebbe restituire solo i valori dellanno
1
2
3
|
SELEZIONA DATEPART (YEAR, HireDate) AS
FROM HumanResources.Employee;
VAI
|
Interroga HireDate per restituire solo la parte relativa al mese della data
Lesempio seguente genera una colonna di output intera denominata e questa dovrebbe restituire solo i valori del mese
1
2
|
SELEZIONA PARTE DATA (MESE, HireDate) COME
DA HumanResources.Employee;
|
Interroga la colonna HireDate per restituire solo la parte Quarter di la data
Il seguente esempio genera una colonna di output intera denominata, e questa dovrebbe restituire solo i valori del mese
1
2
3
|
SELEZIONA DATEPART (TRIMESTRE, HireDate) COME
DA HumanResources.Employee;
GO
|
Il seguente esempio restituisce i dettagli di vendita per il giorno specifico del campo orderDate. Lesempio mostra anche lutilizzo della funzione SQL DATEPART e dei suoi pochi argomenti associati.
Listruzione SELECT seleziona DATEPART, che è il nome della funzione, e accetta due argomenti allinterno delle parentesi. Primo, largomento datepart e il secondo, lespressione della data.
Diamo unocchiata allutilizzo della funzione SQL DATENAME. È simile a una funzione SQL DATEPART, ma restituisce una stringa di caratteri dal campo della data specificato.
Successivamente, diamo unocchiata alle funzioni deterministiche che restituiscono parti di data e ora come valore intero. Lesempio seguente restituisce valori interi dal campo OrderDate per le funzioni YEAR e MONTH corrispondenti.
Loutput è un valore aggregato di TotalSales basato sulle vendite mensili.
Ora prendiamo uno sguardo ad un paio di altre diverse funzioni. E questo che vedremo si chiama DATEDIFF. La funzione SQL DATEDIFF restituisce un valore intero con segno che ci consente di determinare il tempo trascorso tra due date.
Giochiamo con la query per utilizzare parti di date diverse per vedere i risultati.
Lesempio seguente restituisce le parti di tempo tra i due campi DateTime. In questo esempio, ore, minuti e secondi tra i valori DateTime vengono calcolati utilizzando la funzione SQL DATEDIFF
Come per utilizzare la funzione SQL DATEDIFF nella clausola where
Lesempio seguente restituisce tutti i dipendenti che lavorano con lorganizzazione da più di 10 anni. La logica condizionale nella colonna HireDate viene confrontata con quella superiore a 120 mesi è menzionata nella clausola where.
1
2
3
4
|
SELEZIONA *
FROM HumanResources.Employee
WHERE DATEDIFF (MONTH, HireDate, GETDATE ()) > 120;
VAI
|
Come utilizzare la funzione SQL DateDiff con una funzione di aggregazione
Lesempio seguente restituisce il numero di anni tra la prima data di assunzione e lultima data di assunzione. In questo caso, stiamo cercando la funzione di aggregazione minima HireDate e massima HireDate utilizzata come parametri di input per la funzione SQL DATEDIFF.Con questi valori, si potrebbe facilmente trovare il numero di anni trascorsi tra il primo noleggio e lultimo noleggio.
1
2
|
SELEZIONA DATAIFF (YEAR, MIN (HireDate), MAX (HireDate)) No_Of_Years
DA HumanResources.Employee;
|
Diamo unocchiata alla funzione SQL DATEADD. Le funzioni aggiungono o sottraggono il valore alla parte data specificata e restituiscono il valore modificato della parte data.
Diamo unocchiata al seguente esempio. Il valore 1 viene aggiunto alle varie datepart e il valore -1 viene aggiunto allora datepart e -30 viene aggiunto al minuto datepart.
Nelloutput, possiamo vedere che il valore è operato sul GETDATE () come da datepart definito.
Nota: DATEADD e DATEDIFF funzione SQL possono essere utilizzate in SELECT, WHERE, HAVING, GROUP BY e ORDER BY clausole.
Datadiff vs Datediff_BIG
Per ora è tutto in questo articolo in formato data SQL …
Conclusione
Finora, abbiamo visto funzioni di formato data SQL molto importanti come DATEPART, DATENAME, YEAR, MONTH e DAY, con particolare enfasi sulla funzione SQL DATEADD e la funzione SQL DATEDIFF. Le funzioni di formattazione della data SQL in SQL Server sono davvero potenti e aiutano davvero a fornire analisi e report dei dati di grande impatto. In alcuni casi, si tratta di regolare le impostazioni di confronto, le impostazioni di posizione, semplicemente riadattare il flusso di input del valore del testo o la correzione apportata allorigine dati sarebbe sufficiente per il problema della data e dellora.
Si consiglia di utilizzare il formato della lingua neutra perché funziona meglio nella maggior parte dei casi. Infine, vediamo la differenza tra la funzione SQL DATEDIFF e la funzione SQL DATEDIFF_BIG. Spero che questo articolo ti piaccia. Se hai domande, non esitare a commentare di seguito
- Autore
- Post recenti
La mia specialità consiste nel progettare & implementando soluzioni ad alta disponibilità e migrazione di database multipiattaforma. Le tecnologie attualmente in uso sono SQL Server, PowerShell, Oracle e MongoDB.
Visualizza tutti i post di Prashanth Jayaram
- Una rapida panoramica dellaudit del database in SQL – 28 gennaio 2021
- Come configurare Azure Data Sync tra database SQL di Azure e SQL Server locale – 20 gennaio 2021
- Come eseguire operazioni di importazione / esportazione di database SQL di Azure utilizzando PowerShell – 14 gennaio , 2021