oracle产生随机日期,oracle随机生成时间

Julian Date定义

Julian Date:有效的日期范围是从公元前4713年1月1日到公元9999年12月31日。儒略日(julian date)是自公元前4713年1月1日中午12时起经过的天数。

使用它Julian Date使我们计算两个日期之间有多少天比较方便。

使用to_char(date,'J'),将普通日期转换为Julian Date

SELECT TO_CHAR(SYSDATE,'J') FROM dual;

使用to_date(str,'J'),将天数转换为日期

SELECT TO_DATE('2458117','J') FROM dual;

SELECT TO_DATE(to_char(sysdate,'J'),'J') FROM dual;

计算两个日期差了多少天

-- 计算2017-12-29和'2017-12-01差了多少天

SELECT to_char(to_date('2017-12-29','yyyy-mm-dd'),'J')-to_char(to_date('2017-12-01','yyyy-mm-dd'),'J') from dual

随机生成时间

-- 生成2000-01-01到现在的随机日期,时分秒为00:00:00

SELECT TO_DATE (TRUNC (DBMS_RANDOM.VALUE (TO_NUMBER (TO_CHAR (to_date('2000-01-01','yyyy-mm-dd'),

'J'

)

),

TO_NUMBER (TO_CHAR (SYSDATE, 'J'))

)

),

'J'

)

FROM DUAL;

另外一种方法

-- 生成2000-01-01到现在的随机日期,包括时分秒也是随机的

SELECT to_date('2000-01-01', 'yyyy-mm-dd') +

DBMS_RANDOM.VALUE(1, (to_char(sysdate, 'J') - to_char(to_date('2000-01-01', 'yyyy-mm-dd'), 'J')) * 24 * 60 * 60)

/ 3600 / 24

FROM dual;

-- 或者

SELECT to_date(TRUNC(DBMS_RANDOM.VALUE(

to_number(to_char(to_date('2000-01-01','yyyy-mm-dd'),'J')),

to_number(to_char(sysdate,'J')))),'J')+

DBMS_RANDOM.VALUE(1,86400)/1,86400

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值