关于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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值