Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Azure SQL Edge, 30 Eylül 2025 itibarıyla kullanımdan kaldırılmıştır. Daha fazla bilgi ve geçiş seçenekleri için Kullanımdan kaldırma bildirimine bakın.
Uyarı
Azure SQL Edge artık ARM64 platformunu desteklememektedir.
Bu işlev, parametre tarafından tanımlanan zaman damgasından veya kaynak parametresi belirtilmezse varsayılan kaynak değerinden origin her tarih saat demetinin 1900-01-01 00:00:00.000 başlangıcına karşılık gelen tarih saat değerini döndürür.
Tüm Transact-SQL tarih ve saat veri türlerine ve işlevlerine genel bakış için bkz. Tarih ve Saat Veri Türleri ve İşlevleri (Transact-SQL).
Transact-SQL Sözdizimi Kuralları
Sözdizimi
DATE_BUCKET (datePart , number , date , origin)
Arguments
datePart
Aşağıdaki tabloda gösterildiği gibi tarihin 'number' parametresiyle kullanılan bölümü.
DATE_BUCKETdatePart bağımsız değişkenleri için kullanıcı tanımlı değişken eşdeğerlerini kabul etmez.
| datePart | Abbreviations |
|---|---|
| gün | dd, d |
| hafta | wk, ww |
| ay | mm, m |
| çeyrek | qq, q |
| yıl | yy, yyyy |
| saat | hh |
| dakika | mi, n |
| saniye | ss, s |
| milisaniye | Ms |
sayı
Demetin genişliğine datePart bağımsız değişkeniyle birlikte karar veren tamsayı sayısı. Bu, başlangıç saatinden datePart demetlerinin genişliğini temsil eder. Bu bağımsız değişkenin pozitif bir tamsayı değeri olması gerekir.
date
Aşağıdaki değerlerden birine çözümlenebilen bir ifade:
- date
- datetime
- datetime2
- datetimeoffset
- smalldatetime
- time
Tarih için, DATE_BUCKET daha önce bahsedilen veri türlerinden herhangi birine çözümlenmesi durumunda bir sütun ifadesi, ifade veya kullanıcı tanımlı değişken kabul eder.
köken
Aşağıdaki değerlerden birine çözümlenebilen isteğe bağlı bir ifade:
- date
- datetime
- datetime2
- datetimeoffset
- smalldatetime
- time
Kaynak veri türü, tarih parametresinin veri türüyle eşleşmelidir.
DATE_BUCKETişlevi için kaynak değeri belirtilmemişse 1900-01-01 00:00:00.000 tarihi değeri olan 12:00'yi kullanır.
Dönüş türü
Bu yöntemin dönüş değeri veri türü dinamiktir. Dönüş türü, tarih için sağlanan bağımsız değişkene bağlıdır. Tarih için geçerli bir giriş veri türü sağlanırsa, DATE_BUCKET aynı veri türünü döndürür.
DATE_BUCKETtarih parametresi için bir dize değişmez değeri belirtilirse hata verir.
Dönüş değerleri
Çıkışını anlama DATE_BUCKET
DATE_BUCKETdatePart ve number parametrelerine karşılık gelen en son tarih veya saat değerini döndürür. Örneğin, aşağıdaki ifadelerde çıkış, DATE_BUCKET varsayılan kaynak saatinden 2020-04-13 00:00:00.0000000bir haftalık demetler temelinde hesaplandığından çıkış değerini 1900-01-01 00:00:00.000döndürür. Değeri, başlangıç değerinden 2020-04-13 00:00:00.00000001900-01-01 00:00:00.0006276 haftadır.
DECLARE @date DATETIME2 = '2020-04-15 21:22:11';
SELECT DATE_BUCKET(WEEK, 1, @date);
Aşağıdaki tüm ifadeler için aynı çıkış değeri 2020-04-13 00:00:00.0000000 döndürülür. Bunun nedeni 2020-04-13 00:00:00.0000000 , başlangıç tarihinden itibaren 6276 hafta olması ve 6276'nın 2, 3, 4 ve 6 ile bölünebiliyor olmasıdır.
DECLARE @date DATETIME2 = '2020-04-15 21:22:11';
SELECT DATE_BUCKET(WEEK, 2, @date);
SELECT DATE_BUCKET(WEEK, 3, @date);
SELECT DATE_BUCKET(WEEK, 4, @date);
SELECT DATE_BUCKET(WEEK, 6, @date);
Aşağıdaki ifadenin çıktısı, varsayılan başlangıç zamanından 2020-04-06 00:00:00.0000000itibaren 6275 hafta olan şeklindedir1900-01-01 00:00:00.000.
DECLARE @date DATETIME2 = '2020-04-15 21:22:11';
SELECT DATE_BUCKET(WEEK, 5, @date);
Aşağıdaki ifadenin çıktısı, belirtilen çıkış saatinden 2020-06-09 00:00:00.0000000itibaren 75 hafta olan şeklindedir 2019-01-01 00:00:00 .
DECLARE @date DATETIME2 = '2020-06-15 21:22:11';
DECLARE @origin DATETIME2 = '2019-01-01 00:00:00';
SELECT DATE_BUCKET(WEEK, 5, @date, @origin);
Açıklamalar
Aşağıdaki yan tümcelerde kullanın DATE_BUCKET :
GROUP BYHAVINGORDER BYSELECT <list>WHERE
datePart bağımsız değişkeni
dayofyear, day ve weekday aynı değeri döndürür. Her datePart ve kısaltmaları aynı değeri döndürür.
sayı bağımsız değişkeni
Sayı bağımsız değişkeni pozitif int değerleri aralığını aşamaz. Aşağıdaki deyimlerde, sayı bağımsız değişkeni int aralığını 1 aşıyor. Aşağıdaki deyim aşağıdaki hata iletisini döndürür: Msg 8115, Level 16, State 2, Line 2. Arithmetic overflow error converting expression to data type int.
DECLARE @date DATETIME2 = '2020-04-30 00:00:00';
SELECT DATE_BUCKET(DAY, 2147483648, @date);
sayı için negatif bir değer işleve DATE_BUCKET geçirilirse aşağıdaki hata döndürülür.
Msg 9834, Level 16, State 1, Line 1
Invalid bucket width value passed to DATE_BUCKET function. Only positive values are allowed.
tarih bağımsız değişkeni
DATE_BUCKETtarih bağımsız değişkeninin veri türüne karşılık gelen temel değeri döndürür. Aşağıdaki örnekte datetime2 veri türüne sahip bir çıkış değeri döndürülür.
SELECT DATE_BUCKET(DAY, 10, SYSUTCDATETIME());
origin bağımsız değişkeni
içindeki kaynak ve tarih bağımsız değişkenlerinin veri türü aynı olmalıdır. Farklı veri türleri kullanılıyorsa bir hata oluşturulur.
Örnekler
A. Başlangıç zamanından itibaren demet genişliği 1 olan DATE_BUCKET hesaplama
Bu deyimlerin her biri, DATE_BUCKET başlangıç zamanından itibaren demet genişliği 1 olacak şekilde artar:
DECLARE @date DATETIME2 = '2020-04-30 21:21:21';
SELECT 'Week', DATE_BUCKET(WEEK, 1, @date)
UNION ALL SELECT 'Day', DATE_BUCKET(DAY, 1, @date)
UNION ALL SELECT 'Hour', DATE_BUCKET(HOUR, 1, @date)
UNION ALL SELECT 'Minutes', DATE_BUCKET(MINUTE, 1, @date)
UNION ALL SELECT 'Seconds', DATE_BUCKET(SECOND, 1, @date);
Sonuç kümesi aşağıdadır.
Week 2020-04-27 00:00:00.0000000
Day 2020-04-30 00:00:00.0000000
Hour 2020-04-30 21:00:00.0000000
Minutes 2020-04-30 21:21:00.0000000
Seconds 2020-04-30 21:21:21.0000000
B. Sayı ve tarih parametreleri için bağımsız değişken olarak ifadeleri kullanma
Bu örneklerde sayı ve tarih parametreleri için bağımsız değişken olarak farklı ifade türleri kullanılır. Bu örnekler Veritabanı kullanılarak AdventureWorksDW2019 oluşturulur.
Kullanıcı tanımlı değişkenleri sayı ve tarih olarak belirtme
Bu örnek, sayı ve tarih için bağımsız değişken olarak kullanıcı tanımlı değişkenleri belirtir:
DECLARE @days INT = 365,
@datetime DATETIME2 = '2000-01-01 01:01:01.1110000';/* 2000 was a leap year */;
SELECT DATE_BUCKET(DAY, @days, @datetime);
Sonuç kümesi aşağıdadır.
---------------------------
1999-12-08 00:00:00.0000000
(1 row affected)
Sütunu tarih olarak belirtme
Aşağıdaki örnekte, haftalık tarih demetleri üzerinde gruplandırılmış OrderQuantity ve UnitPrice toplamını hesaplıyoruz.
SELECT DATE_BUCKET(WEEK, 1, CAST(Shipdate AS DATETIME2)) AS ShippedDateBucket,
Sum(OrderQuantity) AS SumOrderQuantity,
Sum(UnitPrice) AS SumUnitPrice
FROM dbo.FactInternetSales FIS
WHERE Shipdate BETWEEN '2011-01-03 00:00:00.000'
AND '2011-02-28 00:00:00.000'
GROUP BY DATE_BUCKET(week, 1, CAST(Shipdate AS DATETIME2))
ORDER BY ShippedDateBucket;
Sonuç kümesi aşağıdadır.
ShippedDateBucket SumOrderQuantity SumUnitPrice
--------------------------- ---------------- ---------------------
2011-01-03 00:00:00.0000000 21 65589.7546
2011-01-10 00:00:00.0000000 27 89938.5464
2011-01-17 00:00:00.0000000 31 104404.9064
2011-01-24 00:00:00.0000000 36 118525.6846
2011-01-31 00:00:00.0000000 39 123555.431
2011-02-07 00:00:00.0000000 35 109342.351
2011-02-14 00:00:00.0000000 32 107804.8964
2011-02-21 00:00:00.0000000 37 119456.3428
2011-02-28 00:00:00.0000000 9 28968.6982
Skaler sistem işlevini tarih olarak belirtin
Bu örnekte tarih belirtildi SYSDATETIME. Döndürülen tam değer, deyimin yürütülme gününe ve saatlerine bağlıdır:
SELECT DATE_BUCKET(WEEK, 10, SYSDATETIME());
Sonuç kümesi aşağıdadır.
---------------------------
2020-03-02 00:00:00.0000000
(1 row affected)
Skaler alt sorgular ve skaler işlevleri sayı ve tarih olarak belirtin
Bu örnekte sayı MAX(OrderDate) ve tarih bağımsız değişkenleri olarak skaler alt sorgular kullanılır.
(SELECT top 1 CustomerKey FROM dbo.DimCustomer where GeographyKey > 100)bir sayı bağımsız değişkeninin değer listesinden nasıl seçeceğini göstermek için sayı parametresi için yapay bir bağımsız değişken görevi görür.
SELECT DATE_BUCKET(WEEK,
(
SELECT TOP 1 CustomerKey
FROM dbo.DimCustomer
WHERE GeographyKey > 100
),
(
SELECT MAX(OrderDate)
FROM dbo.FactInternetSales
)
);
Sayısal ifadeleri ve skaler sistem işlevlerini sayı ve tarih olarak belirtin
Bu örnekte sayı ve tarih bağımsız değişkenleri olarak sayısal ifade (((10/2)) ve skaler sistem işlevleri (SYSDATETIME) kullanılır.
SELECT DATE_BUCKET(WEEK, (10 / 2), SYSDATETIME());
Sayı olarak bir toplama penceresi işlevi belirtme
Bu örnekte sayı için bağımsız değişken olarak bir toplama penceresi işlevi kullanılır.
SELECT DISTINCT DATE_BUCKET(DAY, 30, CAST([shipdate] AS DATETIME2)) AS DateBucket,
FIRST_VALUE([SalesOrderNumber]) OVER (
ORDER BY DATE_BUCKET(DAY, 30, CAST([shipdate] AS DATETIME2))
) AS FIRST_VALUE_In_Bucket,
LAST_VALUE([SalesOrderNumber]) OVER (
ORDER BY DATE_BUCKET(DAY, 30, CAST([shipdate] AS DATETIME2))
) AS LAST_VALUE_In_Bucket
FROM [dbo].[FactInternetSales]
WHERE ShipDate BETWEEN '2011-01-03 00:00:00.000'
AND '2011-02-28 00:00:00.000'
ORDER BY DateBucket;
GO
C. Varsayılan olmayan bir kaynak değeri kullanma
Bu örnek, tarih demetlerini oluşturmak için varsayılan olmayan bir çıkış noktası değeri kullanır.
DECLARE @date DATETIME2 = '2020-06-15 21:22:11';
DECLARE @origin DATETIME2 = '2019-01-01 00:00:00';
SELECT DATE_BUCKET(HOUR, 2, @date, @origin);