|
Преобразование типов
|
|||
---|---|---|---|
#18+
Как в PL/SQL преобразовать дату в число? Имеется ввиду не разложение на дд.мм.гг , а полное значение например '1 окт 2002 12:00:00' это 37530.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2002, 11:50 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
to_char(sysdate,'j') ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2002, 12:07 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
для 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 строка. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2002, 12:13 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
тогда не понятно как кодируется время ведь по идее 12:00 это 0.5 а здесь 0.43200 они же утверждают, что тип date полностью совпадает с другими форматами , где 0 это 1 янв 1900 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2002, 12:41 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
Все, понял :) - торможу спасибо а обратно как ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2002, 12:49 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
так а что не понятно, в дне 86400 секунд, а 12 часов, это соответственно 43200, можешь конечно раздельно брать дни 'j' и время 'sssss', которое будешь делить на 0,864, а потом складывать, но какой в этом смысл, после этого ты не сможешь сделать обратной операции, преобразования числа к дате, надо будет разделять целую и дробную часть, дробную домножать на 0,864, а потом округлять до не пойми какого знака... смысл? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2002, 12:49 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
обратно to_date(num,'j.sssss') ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2002, 12:50 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
Большое спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2002, 17:17 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
Только непонятно зачем тебе это нужно. Ведь Oracle хранит дату именно в числовом формате, как я понимаю. Какой смысл конвертить дату в число, а потом загонять её в таблицу в NUMERIC? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2002, 17:24 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
я не собираюсь это записывать в таблицу :) просто внутри пакета необходима некоторая обработка, а Oracle не позволяет делать с типом date ничего , кроме сложения и вычитания... а задачу целиком формулировать долго ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2002, 20:04 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
Зачем же так упрощённо смотреть на операции с датами. Кроме сложения и вычитания я знаю как минимум еще 7 функций для работы с датами, не считая TO_CHAR(), TO_DATE() и SYSDATE ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2002, 09:08 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
А сложение точно работает? Вы проверяли? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2002, 09:49 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
"А сложение точно работает? Вы проверяли?" Страннный вопрос. 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 строка. Или в твоём понимании это не является сложением? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2002, 10:22 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
А может имеется в виду сложение двух дат? ;) Само по себе это конечно глупость, но мне как-то раз пришлось писать громоздкое выражение где даты складывались и отнимались, в итоге получалось числовое значение. Если речь об этом, может легче сгруппировать даты в разности, если это возможно? Т.е. вместо A+B-C-D сделать (A-C) + (B-D) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2002, 11:49 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
Про сложение двух дат никто не говорил. Речь шла о "...а Oracle не позволяет делать с типом date ничего , кроме сложения и вычитания...". Никто не говорил про сложение именно дат. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2002, 12:43 |
|
Преобразование типов
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2002, 12:45 |
|
|
start [/forum/topic.php?fid=52&msg=32061330&tid=1992875]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 140ms |
0 / 0 |