首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

年末的半周放到,该如何解决

2012-02-11 
年末的半周放到SQL code select datepart(year,2007-12-30)select datepart(week,2007-12-30)--------

年末的半周放到

SQL code
 select datepart(year,'2007-12-30')  select datepart(week,'2007-12-30')


-----------
2007

(1 行受影响)


-----------
53

(1 行受影响)


想要自定义函数或其他方法,可以实现:
能够根据一年的最后一周的情况把返回的年和周作调整,如果最后一周在一周内有08年的日期时候,整个一周算第二年的第一周。
如果一周内没有后一年的日期,比如12-31日是星期日,那么这周还算是当前年和当前周,不调整。
结果如下:

上面的日期李子要得到以下结果,如何实现?
-----------
2008

(1 行受影响)


-----------
1
(1 行受影响)



[解决办法]
select DATEADD(wk,DATEDIFF(wk,0,'2007-12-30'),5)--取同一周中最后一天
select year(DATEADD(wk,DATEDIFF(wk,0,'2007-12-30'),5)) --的年份
select datepart(wk,DATEADD(wk,DATEDIFF(wk,0,'2007-12-30'),5))--的星期
做成函数也行
[解决办法]
select case when datepart(weekday,(convert(varchar(4),convert(int,datepart(year,'2007-12-30'))+1)+'-01-01'))>1 and datediff(day,'2007-12-30',datepart(weekday,(convert(varchar(4),convert(int,datepart(year,'2007-12-30'))+1)+'-01-01')))<7
then 1 else datepart(week,'2007-12-30') end as W
[解决办法]
一般sql好像是默認一星期是從星期日-->星期六這樣來排的,
或者改變默認值,或者在寫法上動手腳。

热点排行