In SQL Server kunt u de DAY()
. gebruiken functie om het "dag"-gedeelte van een datum te retourneren. Deze functie retourneert een geheel getal dat de dag van de maand vertegenwoordigt (niet de dag van de week).
Hieronder staan voorbeelden van het gebruik van deze functie.
Syntaxis
De syntaxis gaat als volgt:
DAY ( date )
Waar date
is een uitdrukking die wordt omgezet in een van de volgende gegevenstypen:
- datum
- datumtijd
- datetimeoffset
- datetime2
- smalldatetime
- tijd
Dit kan een kolomuitdrukking, uitdrukking, letterlijke tekenreeks of door de gebruiker gedefinieerde variabele zijn.
Voorbeeld
Hier is een eenvoudig voorbeeld van hoe het werkt:
SELECT SYSDATETIME() AS 'Date', DAY(SYSDATETIME()) AS 'Day';
Resultaat:
+-----------------------------+-------+ | Date | Day | |-----------------------------+-------| | 2018-06-18 00:20:22.1284540 | 18 | +-----------------------------+-------+
Dus de DAY()
functie was in staat om de dag te extraheren uit de datetime2 waarde (die werd geretourneerd door de SYSDATETIME()
functie).
Datum opgegeven als een letterlijke tekenreeks
Hier is een voorbeeld waarbij de datum wordt opgegeven als een letterlijke tekenreeks.
SELECT DAY('2019-01-07') AS Result;
Resultaat:
+----------+ | Result | |----------| | 7 | +----------+
En hier is een voorbeeld waarbij de datum in een ander formaat wordt weergegeven:
SELECT DAY('07/01/2017') AS Result;
Resultaat:
+----------+ | Result | |----------| | 1 | +----------+
Het is echter meestal het beste om het gebruik van datums in dergelijke indelingen te vermijden. Als u dit toch moet doen, moet u rekening houden met de taalinstellingen en/of de datumnotatie-instellingen van de huidige sessie.
Taalinstellingen
De uitvoer van het vorige voorbeeld is afhankelijk van de taalinstellingen en/of datumnotatie-instellingen van de huidige sessie.
Wanneer we de taal instellen, wordt tegelijkertijd impliciet ook het datumformaat ingesteld.
Dit is wat er gebeurt als we hetzelfde datumargument aanbieden in twee verschillende taalomgevingen.
Brits
SET LANGUAGE British; SELECT DAY('07/01/2017') AS Result;
Resultaat:
+----------+ | Result | |----------| | 7 | +----------+
us_English
SET LANGUAGE us_English; SELECT DAY('07/01/2017') AS Result;
Resultaat:
+----------+ | Result | |----------| | 1 | +----------+
Instellingen voor datumnotatie
De instellingen voor datumnotatie kunnen de taalinstellingen overschrijven, dus u moet ook op de hoogte zijn van deze instelling. We kunnen bijvoorbeeld us_English . gebruiken voor onze taal (die een standaard datumnotatie heeft van mdy ), maar we zouden de datumnotatie kunnen vervangen door dmy .
Hier is een voorbeeld:
us_English – Standaard datumnotatie
Hier stellen we de taal in op us_English , waarmee impliciet de datumnotatie wordt ingesteld op mijnj .
SET LANGUAGE us_English; SELECT DAY('07/01/2017') AS Result;
Resultaat:
+----------+ | Result | |----------| | 1 | +----------+
us_English – Datumnotatie overschrijven
Hier stellen we de taal in op us_English (wat impliciet het datumformaat instelt), maar dan stellen we het datumformaat expliciet in op dmy . Dit overschrijft de datumnotatie die impliciet was ingesteld toen we de taal instelden.
SET LANGUAGE us_English; SET DATEFORMAT dmy; SELECT DAY('07/01/2017') AS Result;
Resultaat:
+----------+ | Result | |----------| | 7 | +----------+
Retourneer de naam van de dag
Als u de dagnaam moet retourneren (in tegenstelling tot het dagnummer), raadpleegt u 3 manieren om de dagnaam te halen uit een datum in SQL Server.