- 论坛徽章:
- 0
|
我封装了一个函数,此函数传入varchar(10),传出类型为DATE,此函数返回季初日期 (DB2)- create function GETSESSIONBEGIN (INPUT_DATE VARCHAR(10))
- RETURNS DATE
- BEGIN ATOMIC
- DECLARE L_STATISTICDATE DATE; --传入日期转换为DATE类型
- DECLARE S_STATISTICDATE DATE; --季初日期,作为返回值
- DECLARE IN_SESSION INT; --用来接收传入日期所在的季度
- SET L_STATISTICDATE = DATE(INPUT_DATE); --把传入日期转换为日期类型(为了严谨)
- SET IN_SESSION = QUARTER(L_STATISTICDATE); --取传入日期所在季度,返回INT类型
- --判断是哪个季度,直接定季初日期
- --如果是第一季度返回本年一月一日
- IF IN_SESSION = 1 THEN
- SET S_STATISTICDATE = DATE(TRIM(CHAR(YEAR(L_STATISTICDATE)))||'-01-01');
- END IF;
- --如果是第二季度返回本年四月一日
- IF IN_SESSION = 2 THEN
- SET S_STATISTICDATE = DATE(TRIM(CHAR(YEAR(L_STATISTICDATE)))||'-04-01');
- END IF;
- --如果是第三季度返回本年七月一日
- IF IN_SESSION = 3 THEN
- SET S_STATISTICDATE = DATE(TRIM(CHAR(YEAR(L_STATISTICDATE)))||'-07-01');
- END IF;
-
- --如果是第四季度返回本年十月一日
- IF IN_SESSION = 4 THEN
- SET S_STATISTICDATE = DATE(TRIM(CHAR(YEAR(L_STATISTICDATE)))||'-10-01');
- END IF;
-
- RETURN S_STATISTICDATE;
-
- END
复制代码 |
|