Av: Jeffrey Yao | Oppdatert: 2019-08-06 | Kommentarer (3) | i Slekt: Mer > Datoer
Problem
Siden SQL Server-2012, vi har en ny funksjon calledFORMAT(), det er veldig kraftig i formateringen datetime og numeriske verdier,hva er noen god bruk av denne funksjonen for å brukes i det daglige DBA arbeid?
Løsning
SQL Server-T-SQL-FORMAT () – funksjonen er i hovedsak en CLR type system funksjon,og som sådan, det .,Netto formatering regler gjelder for denne funksjonen. Denne funksjonen returnsa nvarchar verdi (eller null-verdi).
I mitt daglige DBA arbeid, er denne funksjonen gir mange av fordelene som otherwiseneed noen stygge T-SQL konvertering og streng manipulasjon arbeid å få formatsI trenger.,th>EnrollDate
Figur 1 – Rapport
Anta at min kilde bord og data er som følgende:
Hvis vi ønsker å få data som vises i , vi trenger for å beregne som er en beregnet kolonne basert på kolonnen.,/div>
Men å bli kvitt den tvetydighet, kan vi bruke FORMAT () – funksjonen som følger:
declare @dt date='2019-June-08';select FORMAT(@dt, 'ddd') -- returns Sat
Så, for eksempel, vår nevnt ovenfor, kan vi bruke følgende spørring for å få thedesired resultat:
select EnrollDate, WeekDay=format(EnrollDate, 'ddd'), NewMembersfrom tempdb.dbo.NewAccount;
resultatet er:
Bruk SQL Server FORMAT for å få Ulike Numeriske visningsformater
Det er mange krav til hvordan numeriske data er vist, for eksempel en thousandseparator hver 3 sifre, en prosentandel tegn, en valuta prefiks eller en annen formatwhen minus verdien er oppstått., Den følgende tabellen viser noen oftest usednumeric verdi formater.
En praktisk bruk av formatet er vist i det følgende eksemplet, dvs. previouslywhen jeg må sjekke rad teller for tabeller i en database, jeg synes det er veldig inconvenientto finne det svært høye tall uten komma som skilletegn, spesielt når du har hundrevis av millionsof rader eller mer. Følgende kode viser radene i hver tabell i databasen .
kolonnen har et komma for hver 3 sifre, noe som gjør readingmuch enklere enn kolonnen.,
Bruk SQL Server FORMAT for å Vise SQL Server Agent-Jobb Kjøre Varighet
SQL Server jobben historie tabledbo.sysjobhistory har en kolonne som heter, som vist nedenfor:
Dette er et heltall kolonne, når jeg trenger å generere en rapport, kan jeg virkelig ønsker thisto være HH:MM:SS format, for eksempel hvis run_duration er 1, vil jeg at det skal bli 00:00:01,mer eksempler som er oppført i følgende tabell.,
Run_value | Forventet Format |
---|---|
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 |
Så hvordan kan vi oppnå dette?
trikset her er at jeg vil bruke en ikke-dokumentert, men likevel enkel funksjon i msdbdatabase, dbo.,agent_datetime, til å komponere en datetime-verdi ved å legge inn en dummy-verdi,som 20000101, for @parameteren dato og bruk kolonnen for @time-parameter,og deretter bruke FORMAT() for å returnere HH:MM:SS formatert resultat.
for Å illustrere, vil jeg lage en tabell og fylle den med somedata simulere kolonnen i dbo.sysjobhistory bordet.
Med følgende kode, kan jeg konvertere fra HHMMSSint verdi til HH:MM:SS string verdi.,
resultatet er som følger, akkurat hva jeg vil:
Oppsummering
I dette tipset, vi har revisited theFORMAT () – funksjonen som ble introdusert i SQL Server-2012, og listet opp et par praktiske eksempler thatotherwise er vanskelig å gjennomføre. Funksjonen gir deg bekvemmelighet fordaily DBA rapport arbeid og når de brukes riktig, funksjonen bidrar til å gjøre koden klare,enkle å forstå og enkle å vedlikeholde.
jeg har ikke diskutere om kultur parameter som brukes intheFORMAT () – funksjonen., Denne kulturen parameteren kan være svært nyttig i noen culturerelated format arbeid, for eksempel valuta tegn, ukedag navn, dato, format (dvs. år/måned/dayor måned/dag/år, osv.). I enkelte selskaper med kontorer over hele verden, kan vi buildsome spørsmål som vil generere kultur-kompatibel resultater.
Neste Trinn
Du kan lese noen gode tips på MSSQLTips.com snakker om det samme emnet.
kan du dele dine egne funn eller kreativ bruk av denne funksjonen.,
- Format SQL Server Datoer med FORMAT Funksjon
- Nytt FORMAT og CONCAT Funksjoner i SQL Server-2012
- SQL Server-funksjonen til å konvertere heltall dato for å datetime-format
Det er også en veldig interessant artikkel diskuterer noen mangler oftheFORMAT () – funksjonen.,
Sist Oppdatert: 2019-08-06
Om forfatteren
Vis alle mine tips
- Mer-Database Utvikler Tips…