免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4871 | 回复: 10
打印 上一主题 下一主题

在一段时间内判断星期天 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-15 10:56 |只看该作者 |倒序浏览
请问在一段时间内,是否有简便的方法判断星期六或星期天,如:20060506-20060520

论坛徽章:
0
2 [报告]
发表于 2006-06-15 11:52 |只看该作者
设一个初始的一天,xxxx.xx.xx为星期一,然后减一下,再除7.
要不你翻翻以前帖子.
请后边的跟帖指正.

论坛徽章:
0
3 [报告]
发表于 2006-06-15 15:39 |只看该作者
同意楼上的. 参照一个过去的时间就可以得出拉

论坛徽章:
0
4 [报告]
发表于 2006-06-15 22:55 |只看该作者
用这个时间段当作一个loop, 然后调查用一个外部程式计算该日期是星期几就可以了

本坛中以前曾有计算星期几的贴子的源代码你可以找一下。

论坛徽章:
0
5 [报告]
发表于 2006-06-15 23:45 |只看该作者
SQL里面有一个Week的函数好像。

论坛徽章:
0
6 [报告]
发表于 2006-06-16 10:26 |只看该作者

回复 1楼 goldmen 的帖子

1.设一个初始的一天,xxxx.xx.xx为星期一,然后减一下,再除7.
2.http://bbs.chinaunix.net/archiver/?tid-220818.html
3.select dayname('2006-06-17') from XXXXPF
   其中XXXXPF为有一条记录的PF

[ 本帖最后由 helloabc 于 2006-6-16 10:39 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2006-06-16 11:02 |只看该作者
RTVSYSVAL  SYSVAL(QDAYOFWEEK) RTNVAR(&WEEKS)

论坛徽章:
0
8 [报告]
发表于 2006-06-16 15:00 |只看该作者
(QDAYOFWEEK) 系统值好象只能返回当前日期的星期吧? 如果欲知道指定日期的星期又该如何?

我这里看到一段源码, 可惜现在使用中的机器版本太低了,自由格式和%date函数都不认,无法测试,但基本思想也就是楼上有人说的除7加1.



  1. **********************************************************************
  2.       * Procedure   - #dayOfYear                                           *
  3.       * Description - Receive an *ISO date field and return the number     *
  4.       *               of the day in the year.                              *
  5.       * Input       - *ISO date field                                      *
  6.       * Output      - Number 1 - 366                                       *
  7.       **********************************************************************
  8.      p #dayOfYear      b                   export

  9.      d #dayOfYear      pi             3  0
  10.      d inputDate                       d   value options( *nopass )

  11.      d                 ds
  12.      d workDate                        d   datfmt( *jul )
  13.      d day                            3s 0 overlay( workDate : 4 )

  14.       /free

  15.         if %parms = 0;
  16.           workDate = %date();
  17.         else;
  18.           workDate = inputDate;
  19.         endif;

  20.         return  day;

  21.       /end-free

  22.      p #dayOfYear      e

  23.       /eject
  24.       **********************************************************************
  25.       * Procedure   - #weekOfYear                                          *
  26.       * Description - Receive an *ISO date field and return the number     *
  27.       *               of the week of the year.                             *
  28.       * Input       - *ISO date field                                      *
  29.       * Output      - Number 1 - 52.                                       *
  30.       **********************************************************************
  31.      p #weekOfYear     b                   export

  32.      d #weekOfYear     pi             2  0
  33.      d inputDate                       d   value options( *nopass )

  34.      d workDate        s               d

  35.       /free

  36.         if %parms = 0;
  37.           workDate = %date();
  38.         else;
  39.           workDate = inputDate;
  40.         endif;

  41.         return  %div( #dayOfYear( workDate ) : 7 ) + 1;

  42.       /end-free

  43.      p #weekOfYear     e  


复制代码

[ 本帖最后由 blogliou 于 2006-6-16 15:04 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2006-06-16 15:07 |只看该作者
进来拜一下楼上的

论坛徽章:
0
10 [报告]
发表于 2006-06-16 15:10 |只看该作者
I saw this on another newsgroup:


there are even easier methods to determine the day of week or week.
SQL provides several Scalar Functions that can be easily used within RPG:

1. DAYOFWEEK: Calculates the day of week (1=Sunday ... 7=Saturday) from any
date field
2. DAYOFWEEK_ISO: Calculates the day of week according the ISO definitions
(1=Monday ... 7=Sunday)
3. DAYNAME: Determines the name of the week day (Monday ... Sunday)
            The daynames are stored in a message file, that's why it can be
used for each language
            On a German OS for example it will return (Montag ... Sonntag)
4. WEEK: Calculates the week no., January, 1st is always in week 1
5. WEEK_ISO: Calculates the week no. according the ISO definitions
            A week starts always with Monday.
            The first thursday of a year is always in week 1.
            January, 4th is always in week 1.

C/EXEC SQL  Set :MyDayOfWeek = DAYOFWEEK(:MYDATE)
C/END-EXEC

C/EXEC SQL  Set :MyDatOfWeekIso = DAYOFWEEK_ISO(:MyDate)
C/END-EXEC

C/EXEC SQL  Set :MyDayName = DAYNAME(:MYDate)
C/END-EXEC

C/EXEC SQL  Set :MyWeekISO = WEEK_ISO(:MyDate)
C/END-EXEC
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP