標籤:rand date 12月 多少 down from 產生 2-2 ber
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:00SELECT 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 / 24FROM 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,3600)/3600FROM dual;
oracle隨機產生時間