powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Преобразование типов
17 сообщений из 17, страница 1 из 1
Преобразование типов
    #32061101
Lovkin_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как в PL/SQL преобразовать дату в число? Имеется ввиду не разложение на дд.мм.гг , а полное значение
например '1 окт 2002 12:00:00' это 37530.5
...
Рейтинг: 0 / 0
Преобразование типов
    #32061105
Ste@lth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to_char(sysdate,'j')
...
Рейтинг: 0 / 0
Преобразование типов
    #32061110
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для 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 строка.
...
Рейтинг: 0 / 0
Преобразование типов
    #32061131
Lovkin_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тогда не понятно как кодируется время
ведь по идее 12:00 это 0.5 а здесь 0.43200
они же утверждают, что тип date полностью совпадает с другими форматами , где 0 это 1 янв 1900
...
Рейтинг: 0 / 0
Преобразование типов
    #32061142
Lovkin_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все, понял :) - торможу
спасибо
а обратно как ?
...
Рейтинг: 0 / 0
Преобразование типов
    #32061145
Ste@lth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так а что не понятно, в дне 86400 секунд, а 12 часов, это соответственно 43200, можешь конечно раздельно брать дни 'j' и время 'sssss', которое будешь делить на 0,864, а потом складывать, но какой в этом смысл, после этого ты не сможешь сделать обратной операции, преобразования числа к дате, надо будет разделять целую и дробную часть, дробную домножать на 0,864, а потом округлять до не пойми какого знака...
смысл?
...
Рейтинг: 0 / 0
Преобразование типов
    #32061147
Ste@lth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
обратно to_date(num,'j.sssss')
...
Рейтинг: 0 / 0
Преобразование типов
    #32061330
Lovkin_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо!
...
Рейтинг: 0 / 0
Преобразование типов
    #32061333
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только непонятно зачем тебе это нужно. Ведь Oracle хранит дату именно в числовом формате, как я понимаю.
Какой смысл конвертить дату в число, а потом загонять её в таблицу в NUMERIC?
...
Рейтинг: 0 / 0
Преобразование типов
    #32061374
Lovkin_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я не собираюсь это записывать в таблицу :)
просто внутри пакета необходима некоторая обработка, а Oracle не позволяет делать с типом date ничего , кроме сложения и вычитания... а задачу целиком формулировать долго
...
Рейтинг: 0 / 0
Преобразование типов
    #32061407
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем же так упрощённо смотреть на операции с датами.
Кроме сложения и вычитания я знаю как минимум еще 7 функций для работы с датами, не считая TO_CHAR(), TO_DATE() и SYSDATE
...
Рейтинг: 0 / 0
Преобразование типов
    #32061425
MW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А сложение точно работает? Вы проверяли? ;)
...
Рейтинг: 0 / 0
Преобразование типов
    #32061437
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"А сложение точно работает? Вы проверяли?"

Страннный вопрос.
select sysdate-1, sysdate,sysdate+1 from dual
SQLWKS> select sysdate-1, sysdate,sysdate+1 from dual
2>
SYSDATE-1 SYSDATE SYSDATE+1
-------------------- -------------------- ------------------
23.10.02 24.10.02 25.10.02
Выбрана 1 строка.

Или в твоём понимании это не является сложением?
...
Рейтинг: 0 / 0
Преобразование типов
    #32061471
Trampler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может имеется в виду сложение двух дат? ;)
Само по себе это конечно глупость, но мне как-то раз пришлось писать громоздкое выражение где даты складывались и отнимались, в итоге получалось числовое значение. Если речь об этом, может легче сгруппировать даты в разности, если это возможно?

Т.е. вместо A+B-C-D сделать (A-C) + (B-D) ?
...
Рейтинг: 0 / 0
Преобразование типов
    #32061509
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про сложение двух дат никто не говорил. Речь шла о "...а Oracle не позволяет делать с типом date ничего , кроме сложения и вычитания...". Никто не говорил про сложение именно дат.
...
Рейтинг: 0 / 0
Преобразование типов
    #32061514
Lovkin_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to softbuilder@inbox.ru
это какие еще 7 операций? если не секрет :)
я вот только одно еще свойство нашел чисто случайно : если из date вычитать date , то получается numberic :

1: select (to_date('10.10.2002 12:50:00','dd.mm.yyyy hh24:mi:ss')) from dual;

(TO_DATE('10.10.200212:50:00',
------------------------------
10.10.2002 12:50:00

2: select (to_date('10.10.2002 12:50:00','dd.mm.yyyy hh24:mi:ss')-
to_date('1.10.2002 12:00:00','dd.mm.yyyy hh24:mi:ss')) from dual;

(TO_DATE('10.10.200212:50:00',
------------------------------
9,0347222222222
...
Рейтинг: 0 / 0
Преобразование типов
    #32061524
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно не секрет. Это же описано в родных доках Oracle.
Подробности смотри сам.
ADD_MONTHS
LAST_DAY
MONTHS_BETWEEN
NEW_TIME
NEXT_DAY
ROUND (date function)
SYSDATE
TRUNC (date function)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Преобразование типов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]