如何在JCL步骤中动态传递任何类型的TRUNC_TIMESTAMP结果?

时间:2014-03-27 08:52:40

标签: timestamp db2 parameter-passing truncate jcl

我希望创建一个JCL流,它将执行以下操作:

第1步:运行一个instream DB2

Param1 = SELECT TRUNC_TIMESTAMP(CURRENT TIMESTAMP,'MONTH') 
            FROM SYSIBM.SYSDUMMY1;`

第2步:

Param2 = SELECT TRUNC_TIMESTAMP(CURRENT TIMESTAMP + 1 month,'MONTH')- 1 MICROSECOND) 
            FROM SYSIBM.SYSDUMMY1;

第3步:

SELECT COUNT(*) 
   FROM  HLVQUAL.TABLE_NAME 
   WHERE CREATE_TS between Param1 AND Param2

我将非常感谢您解决我的问题的任何示例,操作方法和其他有用的评论。

3 个答案:

答案 0 :(得分:3)

如何使用单步:

SELECT COUNT(*) 
FROM  HLVQUAL.TABLE_NAME
WHERE CREATE_TS BETWEEN
   TRUNC_TIMESTAMP(CURRENT TIMESTAMP, 'MONTH') AND
   TRUNC_TIMESTAMP(CURRENT TIMESTAMP + 1 MONTH, 'MONTH') - 1 MICROSECOND

答案 1 :(得分:1)

您是否尝试过单一声明?

WITH T (TS1, TS2) AS (
  SELECT 
    TRUNC_TIMESTAMP(CURRENT TIMESTAMP,'MONTH'),
    TRUNC_TIMESTAMP(CURRENT TIMESTAMP + 1 month,'MONTH')- 1 MICROSECOND
  FROM SYSIBM.SYSDUMMY1
)
SELECT COUNT(*) 
FROM  HLVQUAL.TABLE_NAME, T
WHERE CREATE_TS between T.TS1 AND T.TS2

答案 2 :(得分:0)

有批处理执行SQL的实用程序,DSNTEP4和Syncsort是两个例子。将步骤1的结果路由到平面文件。对步骤2执行相同的操作。

为您喜欢的重新格式化实用程序(IEBGENER,SORT等)编写一些控制语句,以便将前两个步骤中的每个步骤生成的时间戳记放入文件中。

将步骤3的SQL的静态部分与生成的时间戳文件连接起来。