- 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)