SQL關於指定日期的操作例項

2021-05-05 00:09:28 字數 2367 閱讀 1466

將指定日期所在月份的所有日期按照周次輸出具體示例如下:

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...