閱讀531 返回首頁    go 阿裏雲 go 技術社區[雲棲]


關於sql中日期相關跨年處理

 

關於sql數據庫裏日期的跨年處理:


讀取本周和上周紀錄時,涉及跨年數據要特殊處理:


數據庫裏周數保存 1-52周。


按照sql函數取得周數時會出現53的問題。


寫入數據庫時要處理州周為53的情況,

week=53   則當作下1年處理

nian=nian+1
week=1

 

本周:

 SET DATEFIRST 1 -- 設置周一為一周的第一天
 declare @week_year int
 set @week_year = year(getdate())
 declare @week smallint -- 第幾周
 select @week = datepart(week,getdate())
 
 if(@week=53)
 begin
  set @week_year=@week_year+1
  set @week=1
 end


上周:


 SET DATEFIRST 1 -- 設置周一為一周的第一天

 declare @last_week_year int

 set @last_week_year = year(getdate())

 declare @last_week smallint -- 第幾周

 select @last_week = datepart(week,getdate())
 
 if(@last_week=1)
  begin
   set @last_week_year=@last_week_year-1
   set @last_week=52
  end
 else
  begin
   set @last_week=@last_week-1
  end


上上周:


 SET DATEFIRST 1 -- 設置周一為一周的第一天

 declare @last_last_week_year int

 set @last_last_week_year = year(getdate())

 declare @last_last_week smallint -- 第幾周

 select @last_last_week = datepart(week,getdate())
 
 if(@last_last_week=1)
  begin
   set @last_last_week_year=@last_last_week_year-1
   set @last_last_week=51
  end
 else if(@last_last_week=2)
  begin
   set @last_last_week_year=@last_last_week_year-1
   set @last_last_week=52
  end
 else
  begin
   set @last_last_week=@last_last_week-2
  end

 

 

本月:


 declare @today_year int
 declare @today_month int


 set @today_year = year(getdate())
 set @today_month = month(getdate())

 

 

上月:

 

 declare @last_month_year int
 declare @last_month int
 set @last_month_year = year(getdate())
 set @last_month = month(getdate())
 
 if (@last_month = 1)
  begin
    set @last_month = 12
    set @last_month_year =@last_month_year -1
  end 
 else if (@last_month != 1)
  begin
   set @last_month = @last_month-1
  end
 

最後更新:2017-04-02 06:52:21

  上一篇:go 更改Myeclipse默認的Jsp PageEncoding
  下一篇:go 自動裝箱與拆箱引發的享元設計模式