Probleem:
U wilt de opmaak van een datumveld of waarde in een SQL Server-database wijzigen.
Voorbeeld:
Onze database heeft een tabel met de naam Patient
met gegevens in de kolommen Id
, FirstName
, LastName
, en RegistrationDate
.
Id | Voornaam | Achternaam | Registratiedatum |
---|---|---|---|
1 | Jane | Willems | 2019-06-20 |
2 | Gabriël | Bruin | 02-02-2019 |
3 | Lora | Volks | 05-11-2016 |
Laten we het formaat van de registratiedatum van elke patiënt wijzigen. We zetten eerst de naam van de weekdag, gevolgd door de maand dag en naam en een jaartal van 4 cijfers (bijv. "vrijdag 27 december 2019").
Oplossing:
We gebruiken de FORMAT()-functie om het formaat van de datum in de RegistrationDate
te wijzigen kolom.
SELECT FirstName, LastName, FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy') AS FormattedRegistrationDate FROM Patient;
Dit is het resultaat van de zoekopdracht:
Voornaam | Achternaam | FormattedRegistrationDate |
---|---|---|
Jane | Willems | Donderdag 20 juni 2019 |
Gabriël | Bruin | Zaterdag 2 februari 2019 |
Lora | Volks | Zaterdag 5 november 2016 |
Discussie:
We kunnen wijzigen hoe een bepaalde datum wordt weergegeven met de functie FORMAT(). Deze functie heeft twee verplichte argumenten en één optioneel argument. In ons voorbeeld hebben we alleen de twee verplichte argumenten gebruikt. De eerste is een datum, die kan komen uit een datum/tijd/datum/tijd-kolom of een uitdrukking die een datum of tijd retourneert. (In ons voorbeeld gebruiken we de kolom RegistrationDate
.) Het tweede argument is een string die de nieuwe datumnotatie bevat. In ons voorbeeld gebruikten we 'dddd, dd MMMM, yyyy' :
- dddd – De naam van de dag van de week.
- d – De dag van de maand, van 1 tot 31.
- MMMM – De volledige naam van de maand.
- jjjj – Het jaartal van vier cijfers.
De onderstaande tabel geeft meer specificaties voor datum/tijd-indelingen:
specificatie | beschrijving |
---|---|
d | Dag in het bereik 1-31 |
dd | Dag in het bereik 01-31 |
ddd | De afgekorte naam van de dag van de week |
dddd | De volledige naam van de dag van de week |
M | Maand van 1 tot 12 |
MM | Maand van 01 tot 12 |
MMM | De afgekorte naam van de maand |
MMMM | De volledige naam van de maand |
j | 2-cijferig jaartal, van 0 tot 99 |
jj | 2-cijferig jaartal van 00 tot 99 |
jjjj | 4-cijferig jaar |
g | Era (bijv. AD) |
u | Uur van 1 tot 12 (12-uurs klok) |
hh | Uur van 01 tot 12 (12-uurs klok) |
H | Uur van 0 tot 23 (24-uurs klok) |
HH | Uur van 00 tot 23 (24-uurs klok) |
m | Minuut van 0 tot 59 |
mm | Minuten van 00 tot 59 |
s | Tweede van 0 tot 59 |
ss | Tweede van 00 tot 59 |
t | Eerste teken van AM of PM (bijv. 9A, 5P) |
tt | AM of PM |
z | Uren offset, zonder voorloopnul (bijv. +3) |
zz | Uren offset, met voorloopnul (bijv. +03) |
U kunt meer informatie vinden in de Microsoft-documentatie voor standaard datum- en tijdnotaties en aangepaste notaties.
Als je deze datum wilt formatteren voor een specifieke taal en/of land, gebruik dan het derde optionele argument:cultuur . Dit argument is een tekenreeks die de cultuurcode voor een bepaalde regio of land bevat. (Cultuurcodes bestaan uit een taalcode, een streepje en een landcode.) In het onderstaande voorbeeld gebruiken we de cultuurcode voor Duitsland, die de Duitse taalcode ('de') combineert met de landcode voor Duitsland ('DE'), d.w.z. 'de-DE'. De resulterende datum wordt weergegeven in het Duits en geformatteerd zoals een Duits publiek zou verwachten.
SELECT FirstName, LastName, FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy', 'de-DE') AS FormattedRegistrationDate FROM Patient;
Dit is het resultaat van deze zoekopdracht:
Voornaam | Achternaam | Registratiedatum |
---|---|---|
Jane | Willems | Donnerdag, 20 juni 2019 |
Gabriël | Bruin | Samsdag, 2 februari 2019 |
Lora | Volks | Samstag, 5 november 2016 |