DATENAME (Transact-SQL)SQL)

  • 07/29/2017
  • 3 minuter att läsa
    • c
    • j
    • r
    • M
    • M
    • +9

Gäller: SQL Server (alla versioner som stöds) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse

Denna funktion returnerar en teckensträng som representerar den specificerade datadelen av det specificerade datumet.

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

Transact-SQL Syntaxkonventioner

Syntax

DATENAME ( datepart , date ) 

Note

Om du vill se Transact-SQL-syntaxen för SQL Server 2014 och tidigare, se Dokumentationen för tidigare versioner.

Argument

datepart
Den specifika delen av dataargumentet som DATENAME ska returnera. Den här tabellen listar alla giltiga datepart-argument.

Note

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

datepart Abkortningar
år yy, yyyy
kvartal qq, q månad mm, m dayofyear dy, y day dd, d week wk, ww weekday dw, w
timme hh
minut mi, n sekund ss, s
millisekund ms
mikrosekund mcs nanosekund ns
TZoffset tz
ISO_WEEK ISOWK, ISOWWW

date

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

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

För datum accepterar DATENAME ett kolumnuttryck, ett uttryck, en stränglitteral eller en användardefinierad variabel. Använd fyrsiffriga årtal för att undvika tvetydighetsproblem. Information om tvåsiffriga år finns i Konfigurera serverkonfigurationsalternativet för tvåsiffriga år.

Returneringstyp

nvarchar

Returneringsvärde

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

Returneringsvärdet beror på den språkmiljö som ställts in med hjälp av SET LANGUAGE, och med hjälp av konfigurera standardspråket Serverkonfigurationsalternativ för inloggning. Returvärdet beror på SET DATEFORMAT om datum är en stränglitteral i vissa format. SET DATEFORMAT ändrar inte returvärdet när datum är ett kolumnuttryck av en datatyp datum eller tid.

När datumparametern har ett argument av datatyp datum beror returvärdet på den inställning som anges med SET DATEFIRST.

TZoffset datepart Argument

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

smalldatetime date Argument

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

Standard återges för en datepart som inte finns i dateargumentet

Om datatypen för dateargumentet inte har den angivna dateparten återger DATENAME standardvärdet för den dateparten endast om dateargumentet har en bokstavlig .

Till exempel är standardvärdet år-månad-dag för alla datatyper för date 1900-01-01-01. Det här uttalandet har argument för datepart för datepart, ett tidsargument för date, 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 date anges som en variabel eller tabellkolumn, och datatypen för den variabeln eller kolumnen inte har den angivna datepart, returnerar DATENAME fel 9810. I det här exemplet har variabeln @t en datatyp time. Exemplet misslyckas eftersom datumdelen år är ogiltig för datatypen tid:

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

Remarks

Använd DATENAME i följande klausuler:

  • GROUP BY
  • HAVING
  • ORDER BY
  • SELECT <list>
  • WHERE

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

Exempel

Detta exempel returnerar datumdelarna för det angivna datumet. Ersätt ett datumdelvärde från tabellen för datepart-argumentet i SELECT-angivelsen:

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

Här är resultatuppsättningen.

datepart Returvärde
år, åååååå, åååå 2007 kvartal, qq, q 4 månad, mm, m Oktober
årets dag, dy, y 303
dag, dd, d 30 vecka, wk, ww 44 veckodag, dw Tuesday
timme, hh 12
minut, n 15 sekund, ss, s 32 millisekund, ms 123
mikrosekund, mcs 123456
nanosekund, ns 123456700 TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWWW 44

Azure Synapse Analytics and Parallel Data Warehouse

Detta exempel returnerar datumdelar för det angivna datumet. Ersätt ett datumdelvärde från tabellen för argumentet datepart i SELECT-angivelsen:

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

Här är resultatuppsättningen.

datepart Returvärde
år, åååååå, åååå 2007 kvartal, qq, q 4 månad, mm, m Oktober
årets dag, dy, y 303
dag, dd, d 30 vecka, wk, ww 44 veckodag, dw Tuesday
timme, hh 12
minut, n 15 sekund, ss, s 32 millisekund, ms 123
mikrosekund, mcs 123456
nanosekund, ns 123456700 TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWWW 44

Se även

CAST och CONVERT (Transact-SQL)

Lämna ett svar

Din e-postadress kommer inte publiceras.