coffee

coffee let one show himself.

根据输入时间日期返回时间、昨天、本周几、具体日期 类似于微信朋友圈时间 (oracle)

之前写过sqlserver的这种函数,链接在这里。其实oracle的和msserver的一样,只是有些获取时间的函数不太一样,在此仅做记录。

create or replace function  换算_时间描述(	p输入时间 DATE)
RETURN VARCHAR2
AS
当前时间 DATE;
当前日期 DATE;
昨天日期 DATE;
当前时刻 VARCHAR(50);
本周一日期 DATE;
当前年份 VARCHAR(20);

输入日期 DATE;
输入时刻 VARCHAR2(50);
所在周 VARCHAR2(50);
输入年份 VARCHAR2(20);
输入月 VARCHAR2(10);
输入日 VARCHAR2(10);
输入时 VARCHAR2(10);
输入分 VARCHAR2(10);

返回字符串 VARCHAR2(50);
BEGIN
	当前时间:=sysdate;
	当前日期:=当前时间;
	昨天日期:=当前时间-1;
	当前时刻:=  to_char(当前时间,'HH24:Mi:ss');
	本周一日期:=  trunc(当前时间,'iw');
	当前年份:=  extract(year from 当前时间);
	
	
	输入日期:= p输入时间;
	输入时刻:= to_char(p输入时间,'HH24:Mi:ss');
	所在周:=  case to_number(to_char(p输入时间,'D'))-1 when 0 then 7 else to_number(to_char(p输入时间,'D'))-1 end;
	输入年份:=  extract(year from p输入时间);
	输入月:=  extract(month from p输入时间);
	输入日:=  extract(day from p输入时间);
	输入时:= extract(hour from p输入时间);
	输入分:= extract(minute from p输入时间);
	
	
	BEGIN
		IF 当前日期=输入日期 THEN  返回字符串:=输入时||':'||输入分;
		ELSE IF 昨天日期=输入日期 THEN 返回字符串:='昨天';
		ELSE IF (本周一日期<=输入日期 AND 输入日期<当前日期)THEN 返回字符串:=所在周;
		ELSE IF 当前年份=输入年份 THEN 返回字符串:=输入月||'-'||输入日;
		ELSE IF 当前年份<>输入年份 THEN 返回字符串:=输入日期;
		ELSE  返回字符串:='时间计算出错';
    END IF;
    END IF;
    END IF;
    END IF;
    END IF;
	END;
	RETURN 返回字符串;
END;

测试:

  select 换算_时间描述(sysdate-50)  from dual;


阅读更多
文章标签: oracle
个人分类: SQL oracle
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

根据输入时间日期返回时间、昨天、本周几、具体日期 类似于微信朋友圈时间 (oracle)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭