现在的位置: 首页 > 综合 > 正文

sql 日期函数之对于周的处理

2013年02月10日 ⁄ 综合 ⁄ 共 1466字 ⁄ 字号 评论关闭
SELECT 
/* 
* 输出格式: x年x周
* 如:200621
*/


Convert(varchar(4),intYear) +           /* 先将intYear列转成字符型 */
case when len(intWeek)=1               /* 判断intWeek列的长度是否为1 */
 
then 
  
'0' + Convert(varchar(1),intWeek)   /* intWeek列为1位数字时转化成两位字符,最前面补0 */
  
else 
  
Convert(varchar(2),intWeek)           /* 如果是两位则直接转成字符 */
end 
as allYearWeek,                                  /* 给列取别名allYearWeek */

/* 
* 输出格式: xxxx年xx周
* 如:2006年21周
*/

Convert(varchar(4),intYear) + '' +
case when len(intWeek)=1
 
then
  
'0'+ Convert(varchar(1),intWeek) 
 
else
  
Convert(varchar(2),intWeek) 
end
 
+ '' as DesYearWeek ,

/* 
* 输出格式:x月x日~x月x日
* 如: 05.22~05.28
 
*/

right(replace(strWeekBeginDate,'-','.'),5+   /* 先把替换为".",然后再取右边5位 */
'' + 
right(replace(strWeekEndDate,'-','.'),5)
as DesDate

FROM V_GetAllWeeks order by intYear Desc, intWeek Desc

输出结果:

allYearWeek      DesYearWeek               DesDate
200621                2006年21周                  05.2205.28
200620                2006年20周                  05.1505.21
200619                2006年19周                  05.0805.14
200618                2006年18周                  05.0105.07
200617                2006年17周                  04.2404.30
200616                2006年16周                  04.1704.23
200615                2006年15周                  04.1004.16
200614                2006年14周                  04.0304.09
200613                2006年13周                  03.2704.02
200612                2006年12周                  03.2003.26


抱歉!评论已关闭.