DATENAME (Transact-SQL)

  • 07/29/2017
  • 3 minuty na przeczytanie
    • c
    • j
    • .

    • r
    • M
    • M
    • +9

Odnosi się do: SQL Server (wszystkie obsługiwane wersje) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse

Ta funkcja zwraca ciąg znaków reprezentujący określony datepart określonej daty.

Patrz Typy i funkcje danych daty i czasu (Transact-SQL), aby zapoznać się z przeglądem wszystkich typów i funkcji danych daty i czasu w języku Transact-SQL.

Konwencje składni języka Transact-SQL

Syntaktyka

DATENAME ( datepart , date ) 

Uwaga

Aby zapoznać się ze składnią języka Transact-SQL dla SQL Server 2014 i wcześniejszych, zobacz Dokumentacja poprzednich wersji.

Argumenty

datepart
Szczegółowa część argumentu daty, którą zwróci DATENAME. W tej tabeli wymieniono wszystkie ważne argumenty datepart.

Uwaga

DATENAME nie akceptuje zdefiniowanych przez użytkownika odpowiedników zmiennych dla argumentów datepart.

.

datepart Abbreviations
rok rr, yyyy
kwartał qq, q
miesiąc mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw, w
godzina h
minuta mi, n
sekunda ss, s
milisekunda ms
mikrosekunda mcs
nanosekunda ns
TZoffset tz
ISO_WEEK ISOWK, ISOWW

date

Wyrażenie, które może odpowiadać jednemu z następujących typów danych:

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

W przypadku daty, DATENAME zaakceptuje wyrażenie kolumnowe, wyrażenie, literał łańcuchowy lub zmienną zdefiniowaną przez użytkownika. Użyj czterocyfrowych lat, aby uniknąć problemów z niejednoznacznością. Zobacz Konfiguruj dwucyfrowe odcięcie roku Opcja konfiguracji serwera, aby uzyskać informacje na temat dwucyfrowych lat.

Return Type

nvarchar

Return Value

  • Każda część daty i jej skróty zwracają tę samą wartość.

Wartość zwracana zależy od środowiska językowego ustawionego przez użycie SET LANGUAGE oraz przez Opcję konfiguracji domyślnego języka serwera Konfiguruj logowanie. Wartość zwracana jest zależna od SET DATEFORMAT, jeżeli data jest literałem łańcuchowym niektórych formatów. SET DATEFORMAT nie zmienia wartości zwracanej, gdy data jest wyrażeniem kolumnowym typu danych date lub time.

Gdy parametr date ma argument typu danych date, wartość zwracana zależy od ustawienia określonego przez SET DATEFIRST.

TZoffset datepart Argument

Jeśli argument datepart jest TZoffset (tz) i argument date nie ma przesunięcia strefy czasowej, DATEADD zwraca 0.

smalldatetime date Argument

Gdy date jest smalldatetime, DATENAME zwraca sekundy jako 00.

Default Returned for a datepart That Is Not in the date Argument

Jeśli typ danych argumentu date nie ma określonej części datepart, DATENAME zwróci wartość domyślną dla tej części datepart tylko wtedy, gdy argument date ma dosłowne .

Na przykład, domyślny rok-miesiąc-dzień dla dowolnego typu danych date to 1900-01-01. To wyrażenie ma argumenty części daty dla datepart, argument czasu dla daty, a DATENAME zwraca 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'); 

Jeśli data jest określona jako zmienna lub kolumna tabeli, a typ danych dla tej zmiennej lub kolumny nie ma określonej części daty, DATENAME zwróci błąd 9810. W tym przykładzie zmienna @t ma typ danych time. Przykład kończy się niepowodzeniem, ponieważ część date year jest nieprawidłowa dla typu danych time:

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

Uwagi

Użyj DATENAME w następujących klauzulach:

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

W SQL Server, DATENAME implicite rzutuje literały łańcuchowe jako typ datetime2. Innymi słowy, DATENAME nie obsługuje formatu YDM, gdy data jest przekazywana jako ciąg znaków. Musisz jawnie rzutować łańcuch na typ datetime lub smalldatetime, aby użyć formatu YDM.

Przykłady

Ten przykład zwraca części daty dla określonej daty. Zastąp wartość części daty z tabeli argumentem datepart w instrukcji SELECT:

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

Oto zbiór wyników.

datepart wartość zwracana
rok, rrrr, rrrr 2007
kwartał, qq, q 4
miesiąc, mm, m October
day of year, dy, y 303
day, dd, d 30
week, wk, ww 44
weekday, dw wtorek
godzina, hh 12
minuta, n 15
sekunda, ss, s 32
milisekunda, ms 123
mikrosekunda, mcs 123456
nanosekunda, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Azure Synapse Analytics and Parallel Data Warehouse

Ten przykład zwraca części daty dla podanej daty. Zastąp wartość części daty z tabeli argumentem datepart w instrukcji SELECT:

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

Oto zbiór wyników.

datepart wartość zwracana
rok, rrrr, rrrr 2007
kwartał, qq, q 4
miesiąc, mm, m October
day of year, dy, y 303
day, dd, d 30
week, wk, ww 44
weekday, dw wtorek
godzina, hh 12
minuta, n 15
sekunda, ss, s 32
milisekunda, ms 123
mikrosekunda, mcs 123456
nanosekunda, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Zobacz także

CAST i CONVERT (Transact-SQL)

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.