IBM大型机论坛索引
 
登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答 寄存器
 

given a date how to determine the first 天 of the quarter


IBM大型机论坛 -> DB2
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
sunilmfs

新的用户


已加入:2010年11月9日
帖子:20
地点:海得拉巴

发布发表:2011年6月27日星期一12:32 pm
引用回复

when I enter 日期 or current date, I need the first 天 of that quarter..

请帮助
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2011年6月27日星期一12:51 pm
引用回复

发布时最好使用有意义的标题!
主题已编辑
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

发布发表:2011年6月27日星期一2点12分
引用回复

将四分之一毫米存放在某处。

使用以下方法将ddmm与存储的ddmm进行比较>, <, 管他呢。适合的日期是该日期的该季度的第一天。
回到顶部
查看用户资料 发送私信
dbzTHEdinosauer

全球主持人


已加入:2006年10月20日
帖子:6967
位置:瓷宝座

发布发表:2011年6月27日星期一2:14 pm
引用回复

码:

使用工作表(WRKDATE)
  AS(
     SELECT 日期(SUBSTR(CHAR(YEAR(CURRENT_DATE)),1,4)
                 ||SUBSTR('-01',1,3)||SUBSTR('-01',1,3)
                )
       从SYSIBM.SYSDUMMY1
     UNION ALL
     SELECT 日期(SUBSTR(CHAR(YEAR(CURRENT_DATE)),1,4)
            || SUBSTR('-04',1,3)||SUBSTR('-01',1,3)
                )
       从SYSIBM.SYSDUMMY1
     UNION ALL
     SELECT 日期(SUBSTR(CHAR(YEAR(CURRENT_DATE)),1,4)
            || SUBSTR('-07',1,3)||SUBSTR('-01',1,3)
                )
       从SYSIBM.SYSDUMMY1
     UNION ALL
     SELECT 日期(SUBSTR(CHAR(YEAR(CURRENT_DATE)),1,4)
            || SUBSTR('-10',1,3)||SUBSTR('-01',1,3)
                )
       从SYSIBM.SYSDUMMY1
    )
选择 工作日
  从WORKTAB
 WHERE 25美分硬币(WRKDATE) = 25美分硬币(CURRENT_TIMESTAMP)
;


将您的主机变量替换为QUARTER(CURRENT_TIMESTAMP)
回到顶部
查看用户资料 发送私信
sunilmfs

新的用户


已加入:2010年11月9日
帖子:20
地点:海得拉巴

发布发表:2011年6月27日星期一2:27 pm
引用回复

谢谢迪克
enrico:从下一次开始,我会做的很好
回到顶部
查看用户资料 发送私信
陀螺仪

活跃的成员


已加入:2009年7月31日
帖子:565
地点:班加罗尔

发布发表:2011年6月27日星期一2:33 pm
引用回复

或者...不使用with子句

码:


选择
案件
    WHEN 25美分硬币(CURRENT 日期) = 1 THEN 日期(STRIP(CHAR(YEAR(CURRENT 日期)))||CHAR('-01-01'))
    WHEN 25美分硬币(CURRENT 日期) = 2 THEN 日期(STRIP(CHAR(YEAR(CURRENT 日期)))||CHAR('-04-01'))
    WHEN 25美分硬币(CURRENT 日期) = 3 THEN 日期(STRIP(CHAR(YEAR(CURRENT 日期)))||CHAR('-07-01'))
    WHEN 25美分硬币(CURRENT 日期) = 4 THEN 日期(STRIP(CHAR(YEAR(CURRENT 日期)))||CHAR('-10-01'))
结束
 从SYSIBM.SYSDUMMY1
;

回到顶部
查看用户资料 发送私信
盖伊

高级会员


已加入:2009年8月11日
帖子:1281
地点:比利时

发布发表:2011年6月27日星期一2:42 pm
引用回复

码:
Datecol-(day(datecol) -1) 天s - mod( month(datecol) - 1,3) months

这与
码:
Datecol-mod( month(datecol) - 1,3) months - (day(datecol) -1) 天s
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2011年6月27日星期一2:52 pm
引用回复

好吧,我会咬...
那类似的东西呢
码:
    ...
     SELECT 日期(CHAR(YEAR(<the date>)),1,4) ||
                 CHAR('-0') ||
                 CHAR(QUARTER(<the date>)) ||
                 CHAR('-01')
                )
     FROM <适当的表>
    ...


只是逻辑,语法可能会发臭 icon_biggrin.gif
如果我愿意,可以随时抨击我 公然地 错误

(*) 我通常有 强大 算法解决方案的偏好

季度=(月-1)%4 +1
其中%是整数除法
或如果整数除法运算符不可用
季度= INT((月-1)/ 4)+ 1
其中/是标准除法,INT返回整数部分
回到顶部
查看用户资料 发送私信
sunilmfs

新的用户


已加入:2010年11月9日
帖子:20
地点:海得拉巴

发布发表:2011年6月27日星期一2:52 pm
引用回复

巴拉特越来越错误

命令===>滚动===> CSR
选择00670078
案例00680078
当季度(CURRENT 日期) = 1 THEN 00690078
日期(STRIP(CHAR(YEAR(CURRENT 日期)))||CHAR('-01-01')) 00700078
当季度(CURRENT 日期) = 2 THEN 00710078
日期(STRIP(CHAR(YEAR(CURRENT 日期)))||CHAR('-04-01')) 00720078
当季度(CURRENT 日期) = 3 THEN 00730078
日期(STRIP(CHAR(YEAR(CURRENT 日期)))||CHAR('-07-01')) 00740078
当季度(CURRENT 日期) = 4 THEN 00750078
日期(STRIP(CHAR(YEAR(CURRENT 日期)))||CHAR('-10-01')) 00760078
完00770078
从SYSIBM.SYSDUMMY1 00780078
; 00790078
--------- + --------- + --------- + --------- + --------- + --------- + --------- + --------- +
DSNT408I SQLCODE = -199,错误:非法使用关键字大小写。代币
<END-OF-STATEMENT>QUERYNO具有组顺序相交的位置
预期
回到顶部
查看用户资料 发送私信
dbzTHEdinosauer

全球主持人


已加入:2006年10月20日
帖子:6967
位置:瓷宝座

发布发表:2011年6月27日星期一3:22 pm
引用回复

盖伊
您所说的是正确的,但我不了解与此主题的相关性。

陀螺仪,
你的sql比我的好得多。

苏尼尔

陀螺仪的sql对我有用。

您的,但是,需要进行一些编辑。
删除pg / ln数字。

并在发布时学习使用BB代码。
否则,您的选择有效。

码:

      选择                                                            00670078
      案件                                                              00680078
          WHEN 25美分硬币(CURRENT 日期) = 1 THEN                           00690078
      日期(STRIP(CHAR(YEAR(CURRENT 日期)))||CHAR('-01-01'))             00700078
          WHEN 25美分硬币(CURRENT 日期) = 2 THEN                           00710078
      日期(STRIP(CHAR(YEAR(CURRENT 日期)))||CHAR('-04-01'))             00720078
          WHEN 25美分硬币(CURRENT 日期) = 3 THEN                           00730078
      日期(STRIP(CHAR(YEAR(CURRENT 日期)))||CHAR('-07-01'))             00740078
          WHEN 25美分硬币(CURRENT 日期) = 4 THEN                           00750078
      日期(STRIP(CHAR(YEAR(CURRENT 日期)))||CHAR('-10-01'))             00760078
      结束                                                               00770078
       从SYSIBM.SYSDUMMY1                                           00780078
      ;                                                                 00790078
回到顶部
查看用户资料 发送私信
sunilmfs

新的用户


已加入:2010年11月9日
帖子:20
地点:海得拉巴

发布发表:2011年6月27日星期一4:09 pm
引用回复

嗨,迪克...
请让我知道BB代码。
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2011年6月27日星期一4:12 pm
引用回复

引用:
请让我知道BB代码。

为什么不在这里读到自己呢?
www.ibmmainframes.com/faq.php
回到顶部
查看用户资料 发送私信
sunilmfs

新的用户


已加入:2010年11月9日
帖子:20
地点:海得拉巴

发布发表:2011年6月27日星期一4:41 pm
引用回复

恩里科:知道了。

巴拉特:查询工作正常...谢谢
回到顶部
查看用户资料 发送私信
盖伊

高级会员


已加入:2009年8月11日
帖子:1281
地点:比利时

发布发表:2011年6月27日星期一7:07 pm
引用回复

dbzTHEdinosauer写道:
盖伊
您所说的是正确的,但我不了解与此主题的相关性。

Datecol-(day(datecol) -1) 天s - mod( month(datecol) - 1,3) months将返回任何给定日期间隔的季度的第一天,就像该线程中的其他解决方案一样

恩里科:
不是第二季度的开始日期2011-02-01
不是2011年3月3日的开始日期
2011年4月1日不是第四季度的开始日期
回到顶部
查看用户资料 发送私信
dbzTHEdinosauer

全球主持人


已加入:2006年10月20日
帖子:6967
位置:瓷宝座

发布发表:2011年6月28日,星期二,1:21 pm
引用回复

对于我的db2版本,我必须从以下位置修改sql:

码:
Datecol-(day(datecol) -1) 天s - mod( month(datecol) - 1,3) months


到:(必须将MOD函数中的3转换为整数)
码:

CURRENT 日期 - (day(CURRENT 日期) -1) 天s - mod( month(CURRENT 日期) - 1,int(3)) months


实际上,在使用文字或主机变量时,必须添加其他CAST函数:
码:

日期('2011-01-01') - (DAY(DATE('2011-01-01')) -1) 天S - MOD( MONTH(DATE('2011-01-01')) - 1,INT(3)) MONTHS


仍然,
效果很好,
并且是3个SQL中较好的一个。

Thx 盖伊
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2011年6月28日,星期二,下午1:48
引用回复

引用:
恩里科:
不是第二季度的开始日期2011-02-01
不是2011年3月3日的开始日期
2011年4月1日不是第四季度的开始日期

icon_redface.gif 可恶的脑屁!

为了保持术语的正确性,我也应该写

代替
引用:
季度=(月-1)%4 +1
其中%是整数除法
或如果整数除法运算符不可用
季度= INT((月-1)/ 4)+ 1
其中/是标准除法,INT返回整数部分


引用:
季度第一个月=(月-1)%4 +1
其中%是整数除法
或如果整数除法运算符不可用
季度第一个月= INT((month-1)/ 4)+ 1
其中/是标准除法,INT返回整数部分
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> DB2

 


类似主题
话题 论坛 回覆
没有新帖 使用SORT进行日期转换 同步排序 4
没有新帖 日期转换Y2T到Y2W 同步排序 8
没有新帖 日期格式转换 DFSORT / ICETOOL 4
没有新帖 十六进制值-VB文件替换旧日期... DFSORT / ICETOOL 14
没有新帖 包含排序中的必需日期格式... DFSORT / ICETOOL 6
搜索我们的论坛:


回到顶部