xppdx 发表于 2008-06-10 17:01

请高手相助在db2中计算给定日期的季初日期怎么算啊

请高手相助在db2中计算给定日期的季初日期怎么算啊

我老婆黑社会 发表于 2008-06-10 17:33

什么意思,没看明白呢

大梦 发表于 2008-06-11 13:11

根据日期判断该日期所在季度的第一天是几号?

xppdx 发表于 2008-06-12 21:52

是的,大梦有没有什么好办法

大梦 发表于 2008-06-13 10:14

quarter(current date)能返回季度1,2,3,4,你直接再写个case去判断一下吧!

xppdx 发表于 2008-06-13 16:13

在存储过程中case语句怎么写,在网上查了很多资料都没找到答案!存储过程的资料怎么这么少啊

我老婆黑社会 发表于 2008-06-13 17:45

EXAMPLE:
SELECT Lastname ,sex AS sx
,CASE sex
WHEN ’F’ THEN ’FEMALE’
WHEN ’M’ THEN ’MALE’
ELSE NULL
END AS sexx
FROM employee
WHERE lastname LIKE ’J%’
ORDER BY 1;

xppdx 发表于 2008-06-17 21:39

我是要运算后把季初日期的值赋给变量,该怎么写

boyd123223 发表于 2011-06-24 14:37

我封装了一个函数,此函数传入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
页: [1]
查看完整版本: 请高手相助在db2中计算给定日期的季初日期怎么算啊