sql >> Database >  >> RDS >> Sqlserver

DAY() Voorbeelden in SQL Server (T-SQL)

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.


  1. T-SQL:alle dubbele rijen verwijderen, maar er één behouden

  2. Amazon RDS Point-in-Time Recovery vergelijken met ClusterControl

  3. Gids voor het ontwerpen van database voor online winkelwagentje in MySQL

  4. Hoe SET ROWCOUNT werkt in SQL Server