sql >> Databasteknik >  >> RDS >> Sqlserver

DAY() Exempel i SQL Server (T-SQL)

I SQL Server kan du använda DAY() funktion för att returnera "dag"-delen av ett datum. Denna funktion returnerar ett heltal som representerar dagen i månaden (inte veckodagen).

Nedan finns exempel på hur du använder den här funktionen.

Syntax

Syntaxen ser ut så här:

DAY ( date )

Där date är ett uttryck som löser sig till en av följande datatyper:

  • datum
  • datumtid
  • datumtidsförskjutning
  • datetime2
  • smalldatetime
  • tid

Detta kan vara ett kolumnuttryck, uttryck, strängliteral eller användardefinierad variabel.

Exempel

Här är ett grundläggande exempel på hur det fungerar:

SELECT 
   SYSDATETIME() AS 'Date',
   DAY(SYSDATETIME()) AS 'Day';

Resultat:

+-----------------------------+-------+
| Date                        | Day   |
|-----------------------------+-------|
| 2018-06-18 00:20:22.1284540 | 18    |
+-----------------------------+-------+

Alltså DAY() funktionen kunde extrahera dagen från datetime2 värde (som returnerades av SYSDATETIME() funktion).

Datum tillhandahålls som en bokstavlig sträng

Här är ett exempel där datumet anges som en bokstavlig sträng.

SELECT DAY('2019-01-07') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 7        |
+----------+

Och här är ett exempel där datumet anges i ett annat format:

SELECT DAY('07/01/2017') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Det är dock vanligtvis bäst att undvika att använda datum i sådana format. Om du måste göra det måste du vara uppmärksam på språkinställningarna och/eller datumformatinställningarna för den aktuella sessionen.

Språkinställningar

Utdata från föregående exempel kommer att bero på språkinställningarna och/eller datumformatinställningarna för den aktuella sessionen.

När vi ställer in språket ställs datumformatet implicit in samtidigt.

Det här är vad som händer när vi tillhandahåller samma datumargument i två olika språkmiljöer.

brittisk

SET LANGUAGE British;
SELECT DAY('07/01/2017') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 7        |
+----------+

us_engelska

SET LANGUAGE us_English;
SELECT DAY('07/01/2017') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Inställningar för datumformat

Datumformatinställningarna kan åsidosätta språkinställningarna, så du måste också vara medveten om denna inställning. Till exempel kan vi använda us_english för vårt språk (som har standarddatumformatet mdy). ), men vi kan åsidosätta datumformatet till att vara dmy .

Här är ett exempel:

us_english – Standarddatumformat

Här ställer vi in ​​språket till us_english , som implicit ställer in datumformatet till myy .

SET LANGUAGE us_English;
SELECT DAY('07/01/2017') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

us_english – Åsidosätt datumformat

Här ställer vi in ​​språket till us_english (vilket implicit anger datumformatet), men sedan ställer vi uttryckligen in datumformatet till dmy . Detta åsidosätter datumformatet som implicit ställdes in när vi ställde in språket.

SET LANGUAGE us_English;
SET DATEFORMAT dmy;
SELECT DAY('07/01/2017') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 7        |
+----------+

Återställ dagnamnet

Om du behöver returnera dagnamnet (i motsats till dagnumret), se 3 sätt att få dagnamnet från ett datum i SQL Server.


  1. Flera rader till ett kommaseparerat värde i SQL Server

  2. Hur man konverterar till versaler i MariaDB

  3. Vad är nytt i Postgres-XL 9.6

  4. PostgreSQL – Hur man eliminerar upprepade värden