Saya memiliki kueri yang menghitung tanggal pernikahan anggota di database.
SELECT
SUM(NumberOfBrides) AS [Wedding Count]
, DATEPART( wk, WeddingDate) AS [Week Number]
, DATEPART( year, WeddingDate) AS [Year]
FROM MemberWeddingDates
GROUP BY DATEPART(year, WeddingDate), DATEPART(wk, WeddingDate)
ORDER BY SUM(NumberOfBrides) DESC
Bagaimana cara saya berolahraga ketika awal dan akhir setiap minggu terwakili dalam kumpulan hasil?
SELECT
SUM(NumberOfBrides) AS [Wedding Count]
, DATEPART(wk, WeddingDate) AS [Week Number]
, DATEPART(year, WeddingDate) AS [Year]
, ??? AS WeekStart
, ??? AS WeekEnd
FROM MemberWeddingDates
GROUP BY DATEPART(year, WeddingDate), DATEPART(wk, WeddingDate)
ORDER BY SUM(NumberOfBrides) DESC
sql
sql-server
date
sql-server-2005
week-number
digiguru
sumber
sumber
DATEFIRST
ke selain 7 mematahkan ini.Berikut ini
DATEFIRST
solusi agnostik:sumber
Anda juga bisa menggunakan ini:
sumber
Memperluas jawaban @ Tomalak . Rumusnya berfungsi untuk hari selain Minggu dan Senin, tetapi Anda perlu menggunakan nilai yang berbeda untuk nilai 5. Cara untuk mencapai nilai yang Anda butuhkan adalah
berikut ini tautan ke dokumen: https://msdn.microsoft.com/en-us/library/ms181598.aspx
Dan berikut adalah tabel yang mengaturnya untuk Anda.
Tetapi Anda tidak harus mengingat tabel itu dan hanya rumusnya, dan sebenarnya Anda juga dapat menggunakan tabel yang sedikit berbeda, kebutuhan utamanya adalah menggunakan nilai yang akan membuat sisanya menjadi jumlah hari yang benar.
Berikut adalah contoh yang berfungsi:
Metode ini akan menjadi agnostik dari
DATEFIRST
Pengaturan yang saya butuhkan saat saya membangun dimensi tanggal dengan metode beberapa minggu disertakan.sumber
Ini versi lain. Jika Skenario Anda mengharuskan Sabtu menjadi hari pertama Minggu dan Jumat menjadi hari terakhir Minggu, kode di bawah ini akan menangani itu:
sumber
Query di bawah ini akan memberikan data antara awal dan akhir minggu ini mulai dari minggu hingga Sabtu
sumber
Mari kita pecahkan masalah menjadi dua bagian:
1) Tentukan hari dalam seminggu
The
DATEPART(dw, ...)
pengembalian sejumlah, 1 ... 7, relatif terhadapDATEFIRST
pengaturan ( docs ). Tabel berikut merangkum kemungkinan nilai:Kolom terakhir berisi nilai hari-dalam-minggu yang ideal untuk Senin hingga Minggu minggu *. Dengan hanya melihat grafik kami mendapatkan persamaan berikut:
2) Hitung hari Senin dan Minggu untuk tanggal tertentu
Ini sepele berkat nilai hari dalam seminggu. Berikut ini contohnya:
Keluaran:
* Untuk minggu Minggu hingga Sabtu, Anda hanya perlu menyesuaikan persamaan sedikit, seperti menambahkan 1 di suatu tempat.
sumber
Jika hari Minggu dianggap sebagai hari mulai minggu, maka berikut kodenya
sumber
Saya baru saja menemukan kasus serupa dengan yang ini, tetapi solusi di sini tampaknya tidak membantu saya. Jadi saya mencoba mencari tahu sendiri. Saya mengerjakan tanggal mulai minggu saja, tanggal akhir minggu harus memiliki logika yang sama.
sumber
Jawaban yang paling banyak dipilih berfungsi dengan baik kecuali untuk minggu pertama dan minggu terakhir dalam setahun. Misalnya, jika nilai WeddingDate adalah '2016/01/01', hasilnya akan 2015/12/27 dan 2016/01/02 , tetapi jawaban yang benar adalah 2016/01/01 dan 2016/01/02 .
Coba ini:
Hasilnya terlihat seperti:
Ini bekerja untuk semua minggu, pertama atau lainnya.
sumber
Minggu Mulai & Tanggal Berakhir Dari Tanggal Untuk Formula Power BI Dax
sumber
Ini solusi saya
sumber
Dapatkan Tanggal Mulai & Tanggal Berakhir dengan Tanggal Kustom
sumber
Saya punya cara lain, itu pilih hari Awal dan hari Akhir Minggu Saat Ini:
sumber
Cara lain untuk melakukannya:
Penjelasan:
select datediff(week, 0, @wedding_date) as week_number
dateadd(week, @week_number, @end_weekday)
: menambahkan jumlah minggu dan jumlah hari tertentu ke dalam tanggal awal kalender ' 1900-01-01 'sumber
Ini tidak datang dari saya, tetapi menyelesaikan pekerjaan apa pun:
Saya menemukannya di sini .
sumber
Tidak yakin seberapa berguna ini, tetapi saya berakhir di sini dari mencari solusi di Netezza SQL dan tidak dapat menemukannya di stack overflow.
Untuk IBM netezza Anda akan menggunakan sesuatu (untuk minggu mulai sen, minggu akhir minggu) seperti:
pilih next_day (WeddingDate, 'SUN') -6 sebagai WeekStart,
next_day (WeddingDate, 'SUN') sebagai WeekEnd
sumber
untuk Access Queries, Anda bisa menggunakan format di bawah ini sebagai bidang
Penghitungan langsung diizinkan ..
sumber