Da: Jeffrey Yao | Aggiornamento: 2019-08-06 | Commenti (3) | Correlati: Più > Date
Problema
a partire da SQL Server 2012, abbiamo una nuova funzione calledFORMAT(), è molto potente per la formattazione di tipo datetime e valori numerici,quali sono alcuni buoni utilizza questa funzione per essere utilizzati in tutti i giorni DBA lavoro?
Soluzione
La funzione SQL Server T-SQL FORMAT() è in sostanza una funzione di sistema di tipo CLR,e come tale, il .,A questa funzione si applicano le regole di formattazione netta. Questa funzione restituisce un valore nvarchar (o valore null).
Nel mio lavoro quotidiano di DBA, questa funzione offre molta convenienza che altrimenti ha bisogno di qualche brutto lavoro di conversione T-SQL e manipolazione delle stringhe per ottenere i formati necessari.,th>EnrollDate
Figura 1 – Relazione
Assumere la mia fonte di dati e la tabella è il seguente:
Se si desidera ottenere i dati visualizzati come , abbiamo bisogno di calcolare che è una colonna calcolata in base alla colonna.,/div>
Ma per sbarazzarsi di ambiguità, si può utilizzare la funzione FORMAT() come segue:
declare @dt date='2019-June-08';select FORMAT(@dt, 'ddd') -- returns Sat
Quindi, per il nostro esempio di cui sopra, possiamo utilizzare la seguente query per ottenere thedesired risultato:
select EnrollDate, WeekDay=format(EnrollDate, 'ddd'), NewMembersfrom tempdb.dbo.NewAccount;
Il risultato è:
Utilizzo di SQL Server FORMATO per ottenere Numerico Varie Formati di Visualizzazione
Ci sono molti requisiti su come i dati numerici vengono visualizzati, come un thousandseparator ogni 3 cifre, un segno di percentuale, un prefisso di valuta o di un diverso formatwhen meno valore viene rilevato., La seguente tabella elenca alcuni formati di valore numerici più comunemente utilizzatiformati.
Un uso pratico del formato è mostrato nel seguente esempio, cioè in precedenza quando ho bisogno di controllare i conteggi delle righe per le tabelle in un database, trovo che sia molto scomodo capire quali numeri molto alti sono senza il separatore di virgole, specialmente quando si hanno centinaia di milionidi righe o più. Il codice seguente elenca le righe di ogni tabella nel database .
La colonna ha una virgola per ogni 3 cifre, il che rende la lettura molto più semplice della colonna.,
Usa il FORMATO SQL Server per visualizzare la durata dell’esecuzione del lavoro di SQL Server Agent
SQL Server job history tabledbo.sysjobhistory ha una colonna denominata come mostrato di seguito:
Questo è un intero colonna, quando ho bisogno di generare un report, voglio davvero thisto essere HH:MM:SS formato, per esempio se run_duration è di 1, io voglio 00:00:01,altri esempi sono elencate nella tabella seguente.,
Run_value | Previsto il Formato di Visualizzazione |
---|---|
12 | 00:00:12 |
123 | 00:01:23 |
1234 | 00:12:34 |
12345 | 01:23:45 |
123456 | 12:34:56 |
251234 | 1d+01:12:34 |
Quindi, come possiamo ottenere questo?
Il trucco qui è che userò una funzione non documentata ma semplice in msdbdatabase, dbo.,agent_datetime, per comporre un valore datetime immettendo un valore fittizio, come 20000101 ,per il parametro @ date e utilizzare la colonna per il parametro @ time, quindi utilizzare FORMAT () per restituire il risultato formattato HH:MM:SS.
Per illustrare, creerò una tabella e la popolerò con somedata simulando la colonna in dbo.tabella sysjobhistory.
Con il seguente codice, posso convertire il valore from HHMMSSint in HH:MM:SS string value.,
Il risultato è il seguente, esattamente quello che voglio:
Riepilogo
In questo suggerimento, abbiamo rivisitato la funzione Format() introdotta in SQL Server 2012 e elencato alcuni esempi pratici chealtrimenti sono difficili da implementare. La funzione fornisce la convenienza fordaily DBA rapporto di lavoro e se usato correttamente, la funzione aiuta a rendere il codice conciso,facile da capire e semplice da mantenere.
Non ho discusso del parametro cultura utilizzato intheFORMAT () funzione., Questo parametro cultura può essere molto utile in alcuni lavori in formato culturerelated, come il segno di valuta, il nome del giorno della settimana, il formato della data(cioè anno / mese / giornoo mese / giorno / anno, ecc.). In alcune aziende con uffici in tutto il mondo, possiamo costruire alcune query che genereranno risultati compatibili con la cultura.
I prossimi passi
È possibile leggere alcuni altri buoni consigli su MSSQLTips.com parlando dello stesso argomento.
Si prega di condividere i propri risultati o l’utilizzo creativo di questa funzione.,
- Format SQL Server Dates with FORMAT Function
- New FORMAT and CONCAT Functions in SQL Server 2012
- SQL Server function to convert integer date to datetime format
C’è anche un articolo molto interessante che discute alcune carenze oftheFORMAT() function.,
Ultimo Aggiornamento: 2019-08-06
Circa l’autore
Visualizza tutti i miei suggerimenti
- Altri suggerimenti per gli sviluppatori di database…