將指定日期所在月份的所有日期按照周次輸出具體示例如下:
declare @i int-----------------------------計數器
declare @curwk int-------------------------指定日期在該年的週數
declare @fstwk int-------------------------每月一號在該年的週數
declare @fstday nvarchar(10)---------------每月的第一天
declare @lstday nvarchar(10)---------------每月的最後一天
declare @tmpday smalldatetime--------------每週日的日期
declare @date smalldatetime----------------指定的日期
declare @tmpday1 smalldatetime-------------每週六的日期
set @date = '2007-9-1'
select @fstday=(cast(year(@date) as nvarchar(4))+'-'+ cast(month(@date) as nvarchar(2))+'-'+'1')
set @fstday = convert(nvarchar(10),cast(@fstday as smalldatetime),120)
--print '本月第一天:'+@fstday
set @fstwk = datepart(wk,@fstday)
--print '本月第一周:'+str(@fstwk)
set @lstday = convert(nvarchar(10),dateadd(d,-1,dateadd(m,1,@fstday)),120)
--print '本月最後一周:'+@lstday
set @i=0
----找出跟上個月同一周的日期
while(@i<8)
begin
set @tmpday = dateadd(dd,@i,@fstday)
set @curwk = datepart(wk,@tmpday)
if @curwk>@fstwk
begin
--print @tmpday
break
end
set @i = @i+1
end
--print '本月第二週:'+convert(nvarchar(10),@tmpday,120)
set @i=1
----找出這個月的日期
while(@i<7)
begin
if(@i=1)----------------如果是第一周,直接輸出結果
begin
print('第'+str(@i)+'周:'+@fstday+'--------'+convert(nvarchar(10),dateadd(d,-1,@tmpday),120))
set @i=@i+1
end
/**//*
*如果週日的日期還在該月內則繼續下面的迴圈
**/
if(datediff(d,@tmpday,@lstday)>=0)
begin
set @tmpday1 = dateadd(d,6,@tmpday)------週六的日期就是週日的日期加六就可以
/**//*
*如果週六的日期超過該月最後一天,則直接輸出週日跟該月最後一天,否則輸出週日跟週六
**/
if(datediff(d,@lstday,@tmpday1)>0)--超過該月最後一天,則直接輸出週日跟該月最後一天
begin
print('第'+str(@i)+'周:'+convert(nvarchar(10),@tmpday,120)+'--------'+convert(nvarchar(10),@lstday,120))
end
else--輸出週日跟週六
print('第'+str(@i)+'周:'+convert(nvarchar(10),@tmpday,120)+'--------'+convert(nvarchar(10),@tmpday1,120))
end
set @tmpday=dateadd(d,7,@tmpday)----算出下週日的日期
if (datediff(d,@tmpday,@lstday)<0)--如果週日的日期超過該月的最後一天,則退出迴圈
break
set @i=@i+1
end
SQL獲取指定日期(基本演算法)
declare dtdatetime set dt getdate declare number intset number 3 1 指定日期該年的第一天或最後一天 a.年的第一天 select convert char 5 dt,120 1 1 b.年的最後一天 select convert ch...
shell指令碼刪除指定日期和指定日期前的檔案
測試環境redis持久化到硬碟報錯,發現是因為硬碟空間不夠導致。去尋找占用空間較大的任務,發現flink日誌檔案佔了70 容量,在此之前在測試環境沒有對flink日誌進行維護和刪除。為了以後自動維護日誌檔案,需要寫乙個能夠定時執行任務的shell指令碼。思路 每日凌晨執行指令碼,刪除一周之前的那一天...
mysql 獲取指定日期到指定日期 區間段的日期
第一種方法 cross join 就相當於mysql中的迴圈 cross join 把兩張表中的資料進行 n m的組合,即笛卡爾積 這裡的兩張表利用 union all都有5條資料,所以進行 cross join 後 就有25條資料 而指定的日期區間就會從這25條資料總產生 select curda...