| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 698 人关注过本帖
标题:SQL2005查询日期字段中某条记录是第几周,怎样查询?
只看楼主 加入收藏
davyxjc
Rank: 2
等 级:论坛游民
帖 子:130
专家分:76
注 册:2009-6-30
结帖率:70.37%
收藏
 问题点数:0 回复次数:3 
SQL2005查询日期字段中某条记录是第几周,怎样查询?
假设日期字段Ddate,要查询这个字段中记录是哪一周的,怎样查询?
如某记录的Ddate='2012-05-03'
要查询这是第几周,怎样查询啊?谢谢大家!!
搜索更多相关主题的帖子: 查询 记录 
2012-05-04 10:57
songssong
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2011-12-18
收藏
得分:0 
这个有点难。2000中有这样一个东西


A. 计算 ISO 周的标量值用户定义函数
下例中,用户定义函数 ISOweek 取日期参数并计算 ISO 周数。为了正确计算该函数,必须在调用该函数前唤醒调用 SET DATEFIRST 1。

CREATE FUNCTION ISOweek  (@DATE datetime)
RETURNS int
AS
BEGIN
   DECLARE @ISOweek int
   SET @ISOweek= DATEPART(wk,@DATE)+1
      -DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104')
--Special cases: Jan 1-3 may belong to the previous year
   IF (@ISOweek=0)
      SET @ISOweek=dbo.ISOweek(CAST(DATEPART(yy,@DATE)-1
         AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1
--Special case: Dec 29-31 may belong to the next year
   IF ((DATEPART(mm,@DATE)=12) AND
      ((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28))
      SET @ISOweek=1
   RETURN(@ISOweek)
END

下面是函数调用。注意 DATEFIRST 设置为 1。

SET DATEFIRST 1
SELECT master.dbo.ISOweek('12/26/1999') AS 'ISO Week'
下面是结果集。

ISO Week
----------------
52
2012-06-09 09:07
songssong
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2011-12-18
收藏
得分:0 
2005哥不知道还有没有新方法。
2012-06-09 09:09
shangxisen
Rank: 2
等 级:论坛游民
帖 子:29
专家分:46
注 册:2010-3-20
收藏
得分:0 
select DATENAME(WEEK,convert(varchar(8),Ddate,112)
2012-06-18 13:38
快速回复:SQL2005查询日期字段中某条记录是第几周,怎样查询?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038022 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved