Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Преобразование юлианской даты  [new]
Юлиан
Guest
Доброго времени суток! Подскажите, пожалуйста, есть юлианская дата, которая храниться в поле с типом number. Есть ли стандартные оракловые функции для преобразования этой даты в обычную. И еще вопрос, возможно ли нарезать партиции по диапазону по дате такого типа?
11 фев 09, 17:48    [6808209]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование юлианской даты  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
Юлиан,

TO_DATE(field, 'J')
11 фев 09, 17:51    [6808230]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование юлианской даты  [new]
Юлиан
Guest
Это если из обычной даты в юлиан
11 фев 09, 17:56    [6808259]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование юлианской даты  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
TO_CHAR(my_date, 'J')
11 фев 09, 17:58    [6808267]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование юлианской даты  [new]
Юлиан
Guest
Дата храниться в поле number,тоесть нельзя ту чаром ее преобразовать
11 фев 09, 18:02    [6808287]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование юлианской даты  [new]
Elic
Member

Откуда:
Сообщений: 29979
Юлиан
Дата храниться в поле number,тоесть нельзя ту чаром ее преобразовать
Ворзвращаемся к to_date
11 фев 09, 18:03    [6808296]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование юлианской даты  [new]
Юлиан
Guest
100146-тип number
select to_date(100146,'J') from dual

Результат
00.00.0000

Или я чего-то не понимаю?
11 фев 09, 18:07    [6808323]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование юлианской даты  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
Юлиан
Или я чего-то не понимаю?

SQL> select to_char(to_date(100146, 'J'), 'dd.mm.yyyy hh24:mi:ss') from dual;

TO_CHAR(TO_DATE(100
-------------------
09.03.4438 00:00:00
Проверь форматирование или свою тулзу, которой ты смотришь на дату.
11 фев 09, 18:12    [6808349]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование юлианской даты  [new]
Юлиан
Guest
А партицию можно нарезать на такую дату?
11 фев 09, 18:28    [6808424]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование юлианской даты  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
Юлиан
А партицию можно нарезать на такую дату?
Берешь тестовую базу и тестишь, тестишь, тестишь ...
P.S. Почти по Ленину, если ты знаешь кто это такой
11 фев 09, 18:30    [6808433]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование юлианской даты  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Юлиан
А партицию можно нарезать на такую дату?
Можно, если завести в таблице поле (типа NUMBER), где эта дата будет храниться.
11 фев 09, 18:43    [6808477]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование юлианской даты  [new]
Юлиан
Guest
Извините за тупость, но чего-то я все равно не могу понять
Если я делаю так,
select to_char(to_date(108350, 'J'), 'dd.mm.yyyy') from dual, то получаю такую дату

24.08.4416

А если я делаю так
select TO_DATE('01-01-'||TO_CHAR(1900+TO_NUMBER(SUBSTR(TO_CHAR(108350),1,(LENGTH(TO_CHAR(108350))-3)))),'dd.mm.yyyy') +
TO_NUMBER(SUBSTR(TO_CHAR(108350),(LENGTH(TO_CHAR(108350))-2),3))-1 from dual;

то получаю такую дату
15.12.2008

Причем второй вариант правильный. Объясните мне почем оракл не правильно выдает мне дату
12 фев 09, 11:11    [6810359]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование юлианской даты  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
Юлиан,

А кто сказал, что у тебя дата хранится как число в Юлианском формате?
12 фев 09, 11:22    [6810461]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование юлианской даты  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Юлиан
Извините за тупость, но чего-то я все равно не могу понять
Если я делаю так,
select to_char(to_date(108350, 'J'), 'dd.mm.yyyy') from dual
, то получаю такую дату

24.08.4416

А если я делаю так
select TO_DATE('01-01-'||TO_CHAR(1900+TO_NUMBER(SUBSTR(TO_CHAR(108350),1,(LENGTH(TO_CHAR(108350))-3)))),'dd.mm.yyyy') +
             TO_NUMBER(SUBSTR(TO_CHAR(108350),(LENGTH(TO_CHAR(108350))-2),3))-1 from dual;

то получаю такую дату
15.12.2008

Причем второй вариант правильный. Объясните мне почем оракл не правильно выдает мне дату

Oracle все выдает правильно. Просто интерпретатор выданных результатов ошибается... :-)
Connected to: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

SQL> -- сегодня
SQL> SELECT TO_CHAR(SYSDATE, 'J') AS today FROM dual;

TODAY
-------
2454875

 
SQL> -- Год вашей даты был до нашей эры :-)
SQL> select to_char(to_date(108350, 'J'), 'dd.mm.Syyyy') from dual;

TO_CHAR(TO_
-----------
24.08.-4416
12 фев 09, 11:29    [6810526]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить