DATENAME (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric

Denna funktion returnerar en teckensträng som representerar det angivna datumet och delen av det angivna datumet.

Se Datatyper och funktioner för datum och tid (Transact-SQL) för en översikt över alla datatyper och funktioner för Transact-SQL-datum och tid.

Transact-SQL syntaxkonventioner

Syntax

DATENAME ( datepart , date )  

Arguments

datepart
Den specifika delen av datumargumentet som DATENAME kommer att återkomma. I den här tabellen visas alla giltiga datepart-argument .

Anmärkning

DATENAME accepterar inte användardefinierade variabelekvivalenter för datepart-argumenten .

datepart Abbreviations
år yyy, yyyyy
fjärdedel qq, q
månad mm, m
dayofyear dy, y
dag dd, d
vecka WK, WW
vardag dw, w
timme hh
minut mi, n
andra ss, s
millisekund Ms
mikrosekund Mcs
nanosekund Ns
TZoffset tz
ISO_WEEK ISOWK, ISOWW

date

Ett uttryck som kan lösas till någon av följande datatyper:

  • date
  • datetime
  • datetimeoffset
  • datetime2
  • smalldatetime
  • time

För datumDATENAME accepterar ett kolumnuttryck, uttryck, strängliteral eller användardefinierad variabel. Använd fyrsiffriga år för att undvika tvetydighetsproblem. Mer information om tvåsiffriga år finns i Konfigurera det tvåsiffriga alternativet för serverkonfiguration .

Returtyp

nvarchar

Returvärde

  • Varje datumdel och dess förkortningar returnerar samma värde.

Returvärdet beror på språkmiljön som sätts av att använda SET LANGUAGE, och av alternativet Configure the default language Server Configuration (konfiguration) för inloggningen. Returvärdet beror på SET DATEFORMAT om datum är en strängbokstav av vissa format. SET DATEFORMAT ändrar inte returvärdet när datumet är en kolumnuttryck för en datum- eller tiddatatyp.

När datumparametern har ett datumdatatyp-argument beror returvärdet på inställningen som anges av SET DATEFIRST.

TZoffset datepart Argument

Om datepart-argumentet är TZoffset (tz) och datumargumentet inte har någon tidszonsförskjutning, DATEADD returnerar 0.

smalldatetime-datum Argument

När datum är smalldatetime returnerar DATENAME sekunder som 00.

Standard Returnerad för en datepart som inte finns i dateargumentet

Om datatypen i datumargumentet inte har den angivna datumdelen, DATENAME kommer standarden för den datumdelen endast att returnera om datumargumentet har en literal .

Till exempel är standardår-månad-dag för vilken datumdatatyp som helst 1900-01-01. Detta påstående har datumdelsargument för datumdel, ett tidsargument för datum, och DATENAME returnerar 1900, January, 1, 1, Monday.

SELECT DATENAME(year, '12:10:30.123')  
    ,DATENAME(month, '12:10:30.123')  
    ,DATENAME(day, '12:10:30.123')  
    ,DATENAME(dayofyear, '12:10:30.123')  
    ,DATENAME(weekday, '12:10:30.123');  

Om datum anges som en variabel- eller tabellkolumn, och datatypen för den variabeln eller kolumnen inte har den angivna datumdelen, kommer felet 9810 att ge felmeddelandet. DATENAME I detta exempel har variabel @t en tidsdatatyp . Exemplet misslyckas eftersom datumet för delår är ogiltigt för tidsdatatypen :

DECLARE @t time = '12:10:30.123';   
SELECT DATENAME(year, @t);  

Anmärkningar

Använd DATENAME i följande satser:

  • GRUPPERA EFTER
  • HAVING
  • SORTERA EFTER
  • SELECT-lista <>
  • WHERE

I SQL Server kastar DATENAME implicit strängliteraler som en datetime2-typ . Med andra ord DATENAME stöder inte formatet YDM när datumet skickas som en sträng. Du måste uttryckligen omvandla strängen till en datetime - eller smalldatetime-typ för att använda YDM-formatet.

Examples

Detta exempel returnerar datumdelarna för det angivna datumet. Byt ut ett datepart-värde från tabellen för argumentet datepart i SELECT-satsen:

SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');

Här är resultatet.

datepart Returvärde
år, jjj, jæ 2007
Kvart, qq, q 4
månad, mm, m Oktober
Årets dag, dy, y 303
Dag, DD, D 30
vecka, vecka, vecka 44
vardag, DW Tisdag
timme, hh 12
minut, n 15
För det andra, SS, s 32
millisekund, ms 123
Microsecond, MCS 123456
nanosekund, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Azure Synapse Analytics and Analytics Platform System (PDW)

Detta exempel returnerar datumdelarna för det angivna datumet. Byt ut ett datepart-värde från tabellen för argumentet datepart i SELECT-satsen:

SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');  

Här är resultatet.

datepart Returvärde
år, jjj, jæ 2007
Kvart, qq, q 4
månad, mm, m Oktober
Årets dag, dy, y 303
Dag, DD, D 30
vecka, vecka, vecka 44
vardag, DW Tisdag
timme, hh 12
minut, n 15
För det andra, SS, s 32
millisekund, ms 123
Microsecond, MCS 123456
nanosekund, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Se även

CAST och CONVERT (Transact-SQL)