zoukankan      html  css  js  c++  java
  • Oracle 生成指定范围内随机日期

    Oracle生成一个指定范围内的随机日期

    /*

     * Oracle将日期作为过去某个关键日期(这个日期是公元前471211)的整数偏移量来保存(即把日期保存为一个数字);

     * 因此可通过寻找指定日期关键日期相对应的整数偏移量,再加一个指定范围内的随机整数来生成一个指定范围内的随机日期。

    */

    步骤:

    1. 先找到指定日期关键日期相对应的整数偏移量,格式为'J'

    SQL>select to_char(sysdate,'J') from dual; --系统给的结果是: 2456191

    2. 生成指定范围[min_value, max_value]内的随机日期:

    SQL>select to_date(2456191 + trunc(DBMS_RANDOM.VALUE(min_value, max_value)),'J') from dual;

    例如,要生成一个2003年内的任意日期:

    /*

     * 分析:2003年内的任意日期,即日期范围是(2003-01-01, 2003-12-31)

     * 可以转化为 2003-01-01 + (0, 365),

     * 其中,2003-01-01 就是指定日期’; (0, 365) 就是指定范围

    */

    1. 首先确定200311日的日期整数:

    SQL>select to_char(to_date('2003-01-01', 'yyyy-MM-dd'), 'J') from dual; --系统给的结果是: 2452641

    2. 生成指定范围[min_value, max_value]内的随机日期:

    SQL>select to_date(2452641 + trunc(DBMS_RANDOM.VALUE(0, 365)), 'J') from dual;

     

    dbms_random.seed

    设置 seed 来确定随机数的起始点,对于相同的 seed 而言,随机数的任意一次变化都将是确定的.

    设置种子的目的是重现随机数,用于调试.

    就是说,若某一时刻调用 seed 之后,依次产生的随机数是4,6,1,...

    那么当再次调用相同的 seed 之后,依次产生的随机数仍是4,6,1,...

    seed 参数有两种,一种是数值型,一种是字符型(最大长度2000)

    PROCEDURE seed(val IN BINARY_INTEGER );

    PROCEDURE seed(val IN VARCHAR2 );

  • 相关阅读:
    C++拷贝构造函数(深拷贝,浅拷贝)
    c++ string assign =
    undefined与null的区别---js
    Cocos2d-x内存自动释放机制--透彻篇
    cocos2d-x 坐标系
    cocos-html5 JS 写法基础 语言核心
    selenium--更改标签的属性值
    selenium--高亮显示正在操作的元素
    selenium--页面元素是否可见和可操作
    selenium--拖拽页面元素
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3206493.html
Copyright © 2011-2022 走看看