Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Теоретические аспекты и практические реализации создания, внедрения и использования баз данных, СУБД, хранилищ.
  • Страница:
  • 1
  • 2

ТЕМА: Oracle. Как преобразовать дату в число

Oracle. Как преобразовать дату в число 18 июль 2011 06:19 #2405

  • Olessa
  • Olessa аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 42
  • Спасибо получено: 0
Как в PL/SQL преобразовать дату в число? Имеется ввиду не разложение на дд.мм.гг , а полное значение
например '1 окт 2002 12:00:00' это 37530.5

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Как преобразовать дату в число 18 июль 2011 06:21 #2406

  • Gubin
  • Gubin аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 42
  • Спасибо получено: 0
для TO_CHAR(<date>) есть маска
J - Julian day; the number of days since January 1, 4712
BC. Number specified with ’J’ must be integers.
и для времени
SSSSS - Seconds past midnight (0-86399).

В этом случае дата будет таким числом:
select to_char(to_date('01.10.2002 12:00:00','dd.mm.yyyy hh24:mi:ss'),'J.SSSSS') from dual
SQLWKS> select to_char(to_date('01.10.2002 12:00:00','dd.mm.yyyy hh24:mi:ss'),'J.SSSSS') from dual
2>
TO_CHAR(TO_DA
2452549.43200
Выбрана 1 строка.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Как преобразовать дату в число 18 июль 2011 06:22 #2407

  • Olessa
  • Olessa аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 42
  • Спасибо получено: 0
тогда не понятно как кодируется время
ведь по идее 12:00 это 0.5 а здесь 0.43200
они же утверждают, что тип date полностью совпадает с другими форматами , где 0 это 1 янв 1900

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Как преобразовать дату в число 18 июль 2011 06:23 #2408

  • Dior
  • Dior аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 41
  • Спасибо получено: 0
так а что не понятно, в дне 86400 секунд, а 12 часов, это соответственно 43200, можешь конечно раздельно брать дни 'j' и время 'sssss', которое будешь делить на 0,864, а потом складывать, но какой в этом смысл, после этого ты не сможешь сделать обратной операции, преобразования числа к дате, надо будет разделять целую и дробную часть, дробную домножать на 0,864, а потом округлять до не пойми какого знака...
смысл?
обратно to_date(num,'j.sssss')

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Как преобразовать дату в число 18 июль 2011 06:23 #2409

  • Gubin
  • Gubin аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 42
  • Спасибо получено: 0
Только непонятно зачем тебе это нужно. Ведь Oracle хранит дату именно в числовом формате, как я понимаю.
Какой смысл конвертить дату в число, а потом загонять её в таблицу в NUMERIC?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Как преобразовать дату в число 18 июль 2011 06:26 #2410

  • Olessa
  • Olessa аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 42
  • Спасибо получено: 0
я не собираюсь это записывать в таблицу :)
просто внутри пакета необходима некоторая обработка, а Oracle не позволяет делать с типом date ничего , кроме сложения и вычитания... а задачу целиком формулировать долго

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2