zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    事件驱动模型 泽桐
    装饰器 泽桐
    多用户在线FTP程序 泽桐
    gevent协程、select IO多路复用、socketserver模块 改造多用户FTP程序例子 泽桐
    mysql系列学习 泽桐
    mysql练习题 泽桐
    第1章 Python基础 泽桐
    协程 泽桐
    利用统计进行中文分词与词性分析
    js 数字输入控制,保留两位小数
  • 原文地址:https://www.cnblogs.com/mkdlf/p/8143685.html
Copyright © 2011-2022 走看看