如何判断日期是今年的第几周?
informix中没有这样的函数把,是否需要写存储过程,请教~~回复 #1 wuyue1106 的帖子
不记得informix有这样的函数....... 没有哦!11.50里面好象也没有!
只动手自己写一个! 好像这样就可以
select
trunc (today - to_date (year (today) || '0101', 'yyyymmdd') + to_char (to_date (year (today) || '0101', 'yyyymmdd'), '%w') + 6) / 7)
from systables 原帖由 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 返回唯一行。
回复 #4 ivhb 的帖子
有想法~~:mrgreen: :mrgreen: 提供一个functionCREATE 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; 原帖由 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-6-17 12:20 编辑 ] #---------------------------------------------------------------------#
# -- 日期對應的周別(星期一為第一周開始)
#---------------------------------------------------------------------#
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