Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database w Microsoft Fabric
Funkcja ta zwraca liczbę całkowitą reprezentującą określoną część daty.
Zobacz Typy i funkcje danych daty i godziny (Transact-SQL), aby zapoznać się z omówieniem wszystkich typów danych i funkcji daty i godziny języka Transact-SQL.
Transact-SQL konwencje składni
Składnia
DATEPART ( datepart , date )
Arguments
datepart
Konkretna część argumentu daty , dla której DATEPART zwróci liczbę całkowitą. W tej tabeli wymieniono wszystkie prawidłowe argumenty elementów datepart .
Uwaga / Notatka
DATEPART nie akceptuje odpowiedników zmiennych zdefiniowanych przez użytkownika dla argumentów datepart .
| datepart | Abbreviations |
|---|---|
| rok | yy, yyyy |
| ćwiartka | qq, q |
| miesiąc | mm, m |
| dayofyear | dy, y |
| dzień | dd, d |
| tydzień | WK, WW |
| Rozkład | Dw |
| godzina | hh |
| minuta | mi, n |
| sekunda | SS, S |
| milisekunda | Ms |
| mikrosekundy | Mcs |
| Nanosekund | Ns |
| tzoffset | TZ |
| iso_week | isowk, isoww |
date
Wyrażenie, które rozwiązuje się do jednego z następujących typów danych:
- date
- datetime
- datetimeoffset
- datetime2
- smalldatetime
- time
W przypadku datyDATEPART zaakceptuje wyrażenie kolumny, wyrażenie, literał ciągu lub zmienną zdefiniowaną przez użytkownika. Użyj czterocyfrowych lat, aby uniknąć problemów z niejednoznacznością. Aby uzyskać informacje o dwóch cyfrowych latach , zobacz Konfigurowanie opcji konfiguracji serwera o dwóch cyfrach.
Zwracany typ
int
Wartość zwracana
Każdy element datepart i jego skróty zwracają tę samą wartość.
Wartość zwrotna zależy od środowiska językowego ustawionego przy użyciu SET LANGUAGE oraz od opcji konfiguracji serwera Configure the default language (Konfiguruj domyślny język Server Configuration w logincie). Wartość zwrotu zależy od SET DATEFORMAT, jeśli date jest literalem ciągu w niektórych formatach. USTAW DATEFORMAT nie zmienia wartości zwrotnej, gdy data jest kolumnowym wyrażeniem typu danych daty lub godziny.
Ta tabela przedstawia wszystkie argumenty datepart , wraz z odpowiadającymi im wartościami zwrotnymi, dla instrukcji SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10'). Argument data ma typ danych datetimeoffset(7). Ostatnie dwie pozycje wartości zwrotnejnanosekundowej części datowej to zawsze 00 i ta wartość ma skalę 9:
.123456700
| datepart | Wartość zwracana |
|---|---|
| rok, yyyy, yy | 2007 |
| Ćwierćdolarówka, QQ, Q | 4 |
| miesiąc, mm, m | 10 |
| dayofyear, dy, y | 303 |
| Day, DD, D | 30 |
| tydzień, tydzień, śwień | 44 |
| W dni powszednie, dw | 3 |
| godzina, hh | 12 |
| minuta, n | 15 |
| Po drugie, SS, S | 32 |
| Milisekunda, pani | 123 |
| Mikrosekunda, MCS | 123456 |
| nanosekunda, ns | 123456700 |
| Tzoffset, TZ | 310 |
| iso_week, Isowk, Isoww | 44 |
Kłótnie o randki w tygodniu i dni powszednie
Dla tygodnia (tydzień, ww) lub dnia powszedniego (dw) dla częściDATEPART datepart zwrot zależy od wartości ustawionej przez SET DATEFIRST.
1 stycznia dowolnego roku definiuje początkowy numer dla części datowejtygodnia. Przykład:
DATEPART (wk, 'Jan 1, xxxx') = 1
gdzie xxxx to dowolny rok.
Ta tabela pokazuje wartość zwrotną dla części daty tygodniowej i dni powszednich dla '2007-04-21' dla każdego argumentu SET DATEFIRST. 1 stycznia 2007 przypada na poniedziałek. 21 kwietnia 2007 przypada na sobotę. Dla amerykańskiego angielskiego,
SET DATEFIRST 7 -- ( Sunday )
To domyślna opcja. Po ustawieniu DATEFIRST, użyj tego sugerowanego polecenia SQL dla wartości tabeli datepart:
SELECT DATEPART(week, '2007-04-21 '), DATEPART(weekday, '2007-04-21 ')
| USTAW DATĘ NAJPIERW argument |
tydzień Zwracane |
Rozkład Zwracane |
|---|---|---|
| 1 | 16 | 6 |
| 2 | 17 | 5 |
| 3 | 17 | 4 |
| 4 | 17 | 3 |
| 5 | 17 | 2 |
| 6 | 17 | 1 |
| 7 | 16 | 7 |
rok, miesiąc i dzień, datapart Argumenty
Wartości zwracane dla DATEPART (rok, data), DATEPART (miesiąc, data) i DATEPART (dzień, data) są takie same jak te zwracane przez funkcje YEAR,MONTH i DAY.
iso_week datepart
ISO 8601 zawiera system tygodniowo-datowy ISO, czyli system numeracji tygodni. Każdy tydzień związany jest z rokiem, w którym przypada czwartek. Na przykład tydzień 1 2004 roku (2004W01) obejmował poniedziałek, 29 grudnia 2003 do niedzieli, 4 stycznia 2004. Kraje/regiony europejskie zazwyczaj stosują ten styl numeracji. Kraje/regiony spoza Europy zazwyczaj go nie używają.
Uwaga: najwyższy numer tygodnia w roku może wynosić 52 lub 53 dni.
Systemy numeracji różnych krajów/regionów mogą nie spełniać standardu ISO. Ta tabela pokazuje sześć możliwości:
| Pierwszy dzień tygodnia | Pierwszy tydzień roku zawiera | Tygodnie przydzielone dwa razy | Używane przez/w |
|---|---|---|---|
| Niedziela | 1 stycznia, Pierwsza sobota, 1-7 dni w roku |
Tak | Stany Zjednoczone |
| Poniedziałek | 1 stycznia, Pierwsza niedziela, 1-7 dni w roku |
Tak | Większość Europy i Wielka Brytania |
| Poniedziałek | 4 stycznia, Pierwszy czwartek, 4-7 dni w roku |
Nie. | ISO 8601, Norwegia i Szwecja |
| Poniedziałek | 7 stycznia, Pierwszy poniedziałek, Siedem dni w roku |
Nie. | |
| Środa | 1 stycznia, Pierwszy wtorek, 1-7 dni w roku |
Tak | |
| Sobota | 1 stycznia, Pierwszy piątek, 1-7 dni w roku |
Tak |
tzoffset
DATEPART Zwraca wartość tzoffset (tz) jako liczbę minut (podpisanych). To zdanie zwraca przesunięcie strefy czasowej wynoszące 310 minut:
SELECT DATEPART (tzoffset, '2007-05-10 00:00:01.1234567 +05:10');
DATEPART Wartość tzoffset jest renderowana następująco:
- Dla datetimeoffset i datetime2, tzoffset zwraca przesunięcie czasowe w minutach, podczas gdy przesunięcie dla datetime2 zawsze wynosi 0 minut.
- Dla typów danych, które mogą niejawnie przekształcać się na datetimeoffset lub datetime2,
DATEPARTzwraca przesunięcie czasowe w minutach. Wyjątek: inne typy danych dat/godzin. - Parametry wszystkich innych typów powodują błąd.
smalldatetimetime Argument
Dla wartości DATEPARTlittledatetimezwraca się sekundy jako 00.
Domyślnie zwrócone dla datepart Który nie znajduje się w argumentze daty
Jeśli typ danych argumentu daty nie ma określonego datepartu, domyślny zwróci dla tej części tylko wtedy, DATEPART gdy literal jest określony dla date.
Na przykład domyślny rok-miesiąc-dzień dla dowolnego typu danych datowych to 1900-01-01. To zdanie zawiera argumenty date part dla datepart, argument time dla date i zwraca 1900, 1, 1, 1, 2.
SELECT DATEPART(year, '12:10:30.123')
,DATEPART(month, '12:10:30.123')
,DATEPART(day, '12:10:30.123')
,DATEPART(dayofyear, '12:10:30.123')
,DATEPART(weekday, '12:10:30.123');
Jeśli data jest podana jako kolumna zmiennej lub tabeli, a typ danych dla tej zmiennej lub kolumny nie zawiera określonej części daty, DATEPART zwróci się błąd 9810. W tym przykładzie zmienna @t ma typ danych czasowych . Przykład nie jest zaliczony, ponieważ data część roku jest nieprawidłowa dla typu danych czasowych :
DECLARE @t time = '12:10:30.123';
SELECT DATEPART(year, @t);
Ułamki sekund
Te stwierdzenia pokazują, że zwraca DATEPART ułamkowe sekundy:
SELECT DATEPART(millisecond, '00:00:01.1234567'); -- Returns 123
SELECT DATEPART(microsecond, '00:00:01.1234567'); -- Returns 123456
SELECT DATEPART(nanosecond, '00:00:01.1234567'); -- Returns 123456700
Uwagi
DATEPART można użyć w liście select, WHERE, HAVING, GROUP BY oraz ORDER BY.
DATEPART domyślnie odlewa literale ciągów jako typ datetime2 w SQL Server 2008 (10.0.x) i późniejszych. Oznacza to, że DATENAME nie obsługuje formatu YDM, gdy data jest przekazywana jako ciąg znaków. Aby użyć formatu YDM, należy jawnie rzutować ciąg na typ datetime lub smalldatetime .
Przykłady
Ten przykład zwraca rok bazowy. Rok bazowy pomaga w obliczaniu dat. W przykładzie liczba określa datę. Zauważ, że SQL Server interpretuje 0 jako 1 stycznia 1900 roku.
SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);
-- Returns: 1900 1 1
Ten przykład zwraca część dnia w dacie 12/20/1974.
-- Uses AdventureWorks
SELECT TOP(1) DATEPART (day,'12/20/1974') FROM dbo.DimCustomer;
-- Returns: 20
Ten przykład zwraca rok w części daty 12/20/1974.
-- Uses AdventureWorks
SELECT TOP(1) DATEPART (year,'12/20/1974') FROM dbo.DimCustomer;
-- Returns: 1974