wuyue1106 发表于 2008-06-01 16:54

如何判断日期是今年的第几周?

informix中没有这样的函数把,是否需要写存储过程,请教~~

liaosnet 发表于 2008-06-01 20:19

回复 #1 wuyue1106 的帖子

不记得informix有这样的函数.......

大梦 发表于 2008-06-02 22:22

没有哦!
11.50里面好象也没有!
只动手自己写一个!

ivhb 发表于 2008-06-03 18:41

好像这样就可以
select
trunc (today - to_date (year (today) || '0101', 'yyyymmdd') + to_char (to_date (year (today) || '0101', 'yyyymmdd'), '%w') + 6) / 7)
from systables

xxyyy 发表于 2008-06-03 20:19

原帖由 ivhb 于 2008-6-3 18:41 发表 http://bbs.chinaunix.net/images/common/back.gif
好像这样就可以
select
trunc (today - to_date (year (today) || '0101', 'yyyymmdd') + to_char (to_date (year (today) || '0101', 'yyyymmdd'), '%w') + 6) / 7)
from systables

高!

不过最好加上distinct 或者unique 返回唯一行。

liaosnet 发表于 2008-06-03 21:56

回复 #4 ivhb 的帖子

有想法~~:mrgreen: :mrgreen:

liaosnet 发表于 2008-06-04 11:19

提供一个function

CREATE FUNCTION week_of_year(dt date)
RETURNS integer
WITH(NOT VARIANT)
DEFINE day1 date;
DEFINE nbdays int;
LET day1 = MDY(1, 1, YEAR(dt));
LET nbdays = dt - day1;
RETURN 1 + (nbdays + WEEKDAY(day1)) / 7;
END FUNCTION;

wstar 发表于 2008-06-16 15:58

原帖由 liaosnet 于 2008-6-4 11:19 发表 http://bbs.chinaunix.net/images/common/back.gif
提供一个function

CREATE FUNCTION week_of_year(dt date)
RETURNS integer
WITH(NOT VARIANT)
DEFINE day1 date;
DEFINE nbdays int;
LET day1 = MDY(1, 1, YEAR(dt));
LET nbdays = dt - day1;
RET ...

这给更有想法。

blackuhlan 发表于 2008-06-16 23:26

不好意思,看错题目了

[ 本帖最后由 blackuhlan 于 2008-6-17 12:20 编辑 ]

star_zheng 发表于 2010-11-12 11:07

#---------------------------------------------------------------------#
# -- 日期對應的周別(星期一為第一周開始)
#---------------------------------------------------------------------#
FUNCTION date_to_week(Sdate)
DEFINE Sdate    CHAR(8 ),
       SyymmddCHAR(8 ),
       S10ymd   CHAR(10),
       SweeknoINT,    # -- 周別(本年1/1不為周一則返回上年最後一周)
       Scnt   INT
    LET Syymmdd = Sdate,'0101'
    LET S10ymd= '01/01/',Sdate
    LET Scnt    = weekday(S10ymd)
    LET Scnt    = -Scnt
    CALL chaddc(Syymmdd,Scnt) RETURNING Syymmdd# -- 日期減天數
    CALL chaddd(Sdate,Syymmdd) RETURNING Scnt    # -- 日期相減得天數
    LET Sweekno = (Scnt - 1) / 7
    IFSweekno = 0 THEN   # -- 遞歸調用
      LET Syymmdd = Sdate - 1 USING "&&&&",'1231'
      CALL date_to_week(Syymmdd) RETURNING Sweekno
    END IF
    RETURN Sweekno
END FUNCTION
页: [1] 2
查看完整版本: 如何判断日期是今年的第几周?