Bir tarihin, bir ayın başlangıcındaki haftanın gününe ve tarihine göre hesaplamak istiyorum. Bir @StartDate = 2016/04/01
ve @EndDate = 2016/09/01
sahip varsayarsak, ben her ayın ilk Cuma herkes için tarihleri yaratacak @EndDate
sonra, Nisan ayının ilk Cuma günü @StartDate
olduğunu kontrol edin:Günün tarihine ve ayın başlangıcına göre tarih hazinesi oluşturun
@StartDate = 2016/04/12
ve
@EndDate = 2016/09/01
yılında
2016/05/06
2016/06/03
2016/07/01
2016/08/05
, ben dikkat durumda @StartDate = 2016/04/28
ve @EndDate = 2016/09/01
yılında
2016/05/10
2016/06/14
2016/07/12
2016/08/09
, ben @StartDate
l üzerinde olduğuna dikkat: @StartDate
Nisan ayının ikinci Salı, daha sonra her ayın ikinci Salı günü Salı almaya gitti Nisan ayının ast Perşembe: Sadece 4 hafta ya da 5 hafta ile aylar bulunduğundan son durumda
2016/05/26
2016/06/30
2016/07/28
2016/08/25
, ben her ayın hafta numarasını doğrulamak gerekir ve ben son örneğini istiyorum.
Ne yaptım? Ben ayın üçüncü haftasında beni her Pazartesi veren bir kod buldum ve ben bir @StartDate
ve @EndDate
almak için biraz benimsenen: Yani
;with
filler as (select row_number() over (order by a) a from (select top 100 1 as a from syscolumns) a cross join (select top 100 1 as b from syscolumns) b),
dates as (select dateadd(month, a-1, @StartDate) date from filler where a <= 1000 and dateadd(month, a-1, @StartDate) < @EndDate),
FirstMonday as (
select dateadd(day, case datepart(weekday,Date) /*this is the case where verify the week day*/
when 1 then 1
when 2 then 0
when 3 then 6
when 4 then 5
when 5 then 4
when 6 then 3
when 7 then 2
end, Date) as Date
,case when datepart(weekday, @StartDate) = 1 then 3 else 2 end as Weeks /*here i verify the number of weeks to sum in the next date*/
from dates
)
select dateadd(week, Weeks, Date) as ThirdMonday
from FirstMonday
Kurallarınızda belirsizdir. Bir ayın dördüncü pazartesi ile son pazartesi arasındaki farkı nasıl ayırt edersiniz? –
@GordonLinoff kod hakkında konuşuyorsunuz? Bunu yapmak için uyarlamalıyım – CesarMiguel
Bir [takvim tablosu] kullanmayı düşündünüz mü (https://www.mssqltips.com/sqlservertip/4054/creating-a-date-dimension-or-calendar-table-in-sql -sunucu /)? Tüm tarihlerin tam bir listesinden, hafta içi ve hafta numaraları dahil olmak üzere, her zaman ihtiyacınız olan tarihleri filtreleyebilirsiniz. –