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

10 篇文章 0 订阅

之前写过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;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值