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