Функция генерации случайной даты из периода [дубликат]

В соответствии с сообщением об ошибке («Не удалось найти или загрузить основной класс») существуют две категории проблем:

  1. Основной класс не найден
  2. Основной класс не может быть загружен (этот случай не полностью обсуждается в принятом ответе).

Основной класс не может быть найден, если в имени полного класса или его неправильном синтаксисе указан или он не существует в предоставленном пути к классам.

Основной класс не может быть загружен, когда класс не может быть запущен, обычно основной класс расширяет другой класс и этот класс не существует в предоставленном пути к классам.

Например:

public class YourMain extends org.apache.camel.spring.Main

Если верблюжья пружина не включена, эта ошибка будет сообщена.

13
задан sharkbait 3 July 2013 в 14:57
поделиться

3 ответа

Вы можете генерировать случайные даты между двумя датами, как показано в запросе ниже. Сроки рандомизации генерируются между 1-ян-2000 и 31-dec-9999

  SELECT TO_DATE(
              TRUNC(
                   DBMS_RANDOM.VALUE(TO_CHAR(DATE '2000-01-01','J')
                                    ,TO_CHAR(DATE '9999-12-31','J')
                                    )
                    ),'J'
               ) FROM DUAL;

ИЛИ вы можете использовать

SELECT TO_DATE (
              TRUNC (
                     DBMS_RANDOM.VALUE (2451545, 5373484) 
                    )
                , 'J'
              )
  FROM DUAL

В приведенном выше примере первое значение - 01-янв-2000, а второе значение id 31-dec-9999

24
ответ дан Jon Heller 24 August 2018 в 02:47
поделиться

Если вы хотите увидеть его логику, вы также можете использовать этот код.

  create or replace procedure genDate(result out nvarchar2) IS
  year  number;
  month  number;
  day  number;
Begin
  year:=FLOOR(DBMS_RANDOM.value(2000,2100));
  month:=FLOOR(DBMS_RANDOM.value(1,12));
  IF month=2 and (year/4)=0 and (year/100)!=0 then
    day:=FLOOR(DBMS_RANDOM.value(1,29));
  ELSIF month=2 or (year/100)=0 then
    day:=FLOOR(DBMS_RANDOM.value(1,28));
  ELSIF MOD(month,2)=1 then
    day:=FLOOR(DBMS_RANDOM.value(1,31));
  ELSIF MOD(month,2)=0 and month!=2 then
    day:=FLOOR(DBMS_RANDOM.value(1,30));
  END IF;  
  result:=month||'-'||day||'-'||year;
End;
0
ответ дан Cahid Topkaraoglu 24 August 2018 в 02:47
поделиться

Для генерации случайной даты вы можете использовать

select to_date('2010-01-01', 'yyyy-mm-dd')+trunc(dbms_random.value(1,1000)) from dual

или для случайного datetime

select to_date('2010-01-01', 'yyyy-mm-dd')+dbms_random.value(1,1000) from dual
4
ответ дан Kamil Mętrak 24 August 2018 в 02:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: