DATENAME (Transact-SQL)

  • 07/29/2017
  • 3 minuten om te lezen
    • c
    • j
    • r
    • M
    • M
    • +9

Geldt voor: SQL Server (alle ondersteunde versies) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse

Deze functie retourneert een tekenreeks die het gespecificeerde datadeel van de gespecificeerde datum weergeeft.

Zie Gegevenstypen en functies voor datum en tijd (Transact-SQL) voor een overzicht van alle gegevenstypen en functies voor datum en tijd in Transact-SQL.

Transact-SQL Syntax Conventions

Syntax

DATENAME ( datepart , date ) 

Note

Om de Transact-SQL syntax voor SQL Server 2014 en eerder te bekijken, zie de documentatie van eerdere versies.

Arguments

datepart
Het specifieke deel van het datumargument dat DATENAME zal retourneren. In deze tabel staan alle geldige datepart argumenten.

Note

DATENAME aanvaardt geen door de gebruiker gedefinieerde variabele equivalenten voor de datepart argumenten.

datepart Afkortingen
year yy, yyyy
kwartaal qq, q
maand mm, m
dag van het jaar dy, y
dag dd, d
week wk, ww
weekdag dw, w
uur hh
minuut mi, n
tweede ss, s
milliseconde ms
microseconde mcs
nanoseconde ns
TZoffset tz
ISO_WEEK ISOWK, ISOWW

date

Een expressie die kan oplossen naar een van de volgende gegevenstypen:

  • datum
  • datetime
  • datetimeoffset
  • datetime2
  • smalldatetime
  • smalldattime

Voor datum accepteert DATENAME een kolomexpressie, expressie, string literal, of door de gebruiker gedefinieerde variabele. Gebruik viercijferige jaartallen om dubbelzinnigheid te voorkomen. Zie de Serverconfiguratieoptie Configureer de jaarafsluiting met twee cijfers voor informatie over jaartallen met twee cijfers.

Return Type

nvarchar

Return Value

  • Elk datadeel en de afkortingen ervan retourneren dezelfde waarde.

De return value is afhankelijk van de taalomgeving die is ingesteld met SET LANGUAGE, en van de Serverconfiguratieoptie Configureer de standaardtaal van de login. De returnwaarde hangt af van SET DATEFORMAT indien datum een string literal is van sommige formats. SET DATEFORMAT verandert de return waarde niet wanneer de datum een kolom expressie is van een datum of tijd data type.

Wanneer de datum parameter een datum data type argument heeft, hangt de return waarde af van de instelling gespecificeerd door SET DATEFIRST.

TZoffset datepart Argument

Als het datepart argument TZoffset (tz) is en het datum argument heeft geen tijdzone offset, DATEADD retourneert 0.

smalldatetime date Argument

Wanneer datum smalldatetime is, geeft DATENAME seconden als 00 terug.

Standaard geretourneerd voor een datadeel dat niet in het date-argument staat

Als het gegevenstype van het date-argument niet het gespecificeerde datadeel heeft, retourneert DATENAME de standaard voor dat datadeel alleen als het date-argument een letterlijke .

Bijv. het standaard jaar-maand-dag voor elk date-gegevenstype is 1900-01-01. Dit statement heeft date part argumenten voor datepart, een time argument voor date, en DATENAME retourneert 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'); 

Als date is gespecificeerd als een variabele of tabel kolom, en het datatype voor die variabele of kolom heeft niet de gespecificeerde datepart, DATENAME zal fout 9810 retourneren. In dit voorbeeld heeft variabele @t een gegevenstype tijd. Het voorbeeld mislukt omdat het datadeel jaar ongeldig is voor het gegevenstype tijd:

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

Opmerkingen

Gebruik DATENAME in de volgende clausules:

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

In SQL Server worden string-literals door DATENAME impliciet als een datetime2-type gecast. Met andere woorden, DATENAME ondersteunt het formaat YDM niet wanneer de datum als een string wordt doorgegeven. U moet de string expliciet omzetten naar een datetime of smalldatetime type om het YDM formaat te gebruiken.

Voorbeelden

Dit voorbeeld geeft de datumdelen voor de opgegeven datum. Vervang een datagedeelde waarde uit de tabel voor het datepart argument in het SELECT statement:

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

Hier ziet u de resultaatverzameling.

datepart Return value
year, yyyy, yy 2007
kwartaal, qq, q 4
month, mm, m oktober
dag van het jaar, dy, y 303
dag, dd, d 30
week, wk, ww 44
weekdag, dw dinsdag
uur, hh 12
minuut, n 15
seconde, ss, s 32
milliseconde, ms 123
microseconde, mcs 123456
nanoseconde, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Azure Synapse Analytics and Parallel Data Warehouse

Dit voorbeeld geeft de datumdelen voor de opgegeven datum. Vervang een datagedeelde waarde uit de tabel voor het datepart argument in het SELECT statement:

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

Hier is de resultatenset.

datepart Return value
year, yyyy, yy 2007
kwartaal, qq, q 4
month, mm, m oktober
dag van het jaar, dy, y 303
dag, dd, d 30
week, wk, ww 44
weekdag, dw dinsdag
uur, hh 12
minuut, n 15
seconde, ss, s 32
milliseconde, ms 123
microseconde, mcs 123456
nanoseconde, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Zie ook

CAST en CONVERT (Transact-SQL)

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.