Введите время в столбце из определенного диапазона путем перетасовки из временного диапазона

#sql #oracle #oracleforms

#sql #Oracle #oracleforms

Вопрос:

Привет, дорогой, я хочу указать время в таблице, в T1 которой есть столбец, C1,C2,C3 я хочу указать дату в C1, дата должна быть введена с заданной даты date1 между date2 и c2 для повествования, а C3 должен указать время путем перетасовки в C3 из заданного диапазона, что означает, что я хочу добавить время от начала 7:45 до конца 8:00 и хочу указать месяцсистема Jan-2021 может добавить date в C1 за месяц и добавить заданное повествование в c2, кроме воскресенья, и добавить время из заданного диапазона путем перетасовки в oracle forms, пожалуйста

Комментарии:

1. Знаки препинания существуют не просто так; используйте их. Я прочитал ваш вопрос несколько раз и понятия не имею, что вы говорите. Это должно что-то делать с формами Oracle, датами и временем, но я заблудился в столбцах «C» и «описаниях». Надеюсь, кто-то еще поможет.

2. Я хочу, чтобы время вставляло время в столбец из диапазона, например, с 7:45 до 8:00, я могу использовать level, но он будет отправляться одновременно, мне нужно, чтобы он отправлял его случайным образом, например, сначала отправлял 7:45, затем 7: 47, затем 7:49, затем 7:46

Ответ №1:

Если вы хотите создать случайное время, используйте DBMS_RANDOM package . Например:

Изменение сеанса, чтобы вы знали, какие result значения представляют:

 SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi';

Session altered.
 

Запрос:

 SQL> with test (start_date) as
  2    (select to_date('01.01.2021 07:45', 'dd.mm.yyyy hh24:mi') from dual
  3    )
  4  select start_date   round(dbms_random.value(1, 15)) / (24 * 60) result
  5  from test
  6  connect by level <= 15;

RESULT
----------------
01.01.2021 07:49
01.01.2021 07:54
01.01.2021 07:59
01.01.2021 07:58
01.01.2021 07:56
01.01.2021 07:54
01.01.2021 07:57
01.01.2021 07:52
01.01.2021 07:54
01.01.2021 07:52
01.01.2021 07:50
01.01.2021 07:46
01.01.2021 07:53
01.01.2021 07:48
01.01.2021 07:49

15 rows selected.

SQL>
 

Вот как.

Поскольку я все еще не понимаю, что вы на самом деле делаете, я надеюсь, что этого достаточно для вас, чтобы двигаться дальше.

Комментарии:

1. определенно, я хочу, чтобы это u было точным, но я получаю эту ошибку SQL * Плюс состояние внутренней ошибки 2091, контекст 0: 0: 0 Небезопасно для продолжения

2. Похоже, вы используете старый клиент Oracle; возможно, вам следует обновить, если это возможно. Какая у вас версия базы данных и какую версию клиента вы используете для подключения к этой базе данных?

3. Oracle Database 11g Enterprise Edition Выпуск 11.2.0.4.0 — 64-разрядный производственный PL / SQL Выпуск 11.2.0.4.0 — Производственное ЯДРО 11.2.0.4.0 Производственные TNS для Linux: версия 11.2.0.4.0 — Производственный NLSRTL Версия 11.2.0.4.0 — Производственный

4. Верно; довольно старый . Я имею в виду, что 11g старый, но 8i древний . Вам действительно нужно обновиться. Потому что, как вы можете видеть в моем ответе, этот код работает правильно. Я использовал 11g.

5. Вероятно, вам следует перебирать все записи в блоке. Завершите цикл, когда дойдете до последней записи; см. Интерактивную справку по формам и выполните поиск :system переменных (это :system.last_record может оказаться полезным).