Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Конвертация даты  [new]
erdn
Member

Откуда:
Сообщений: 425
Ситуация. Есть столбец в таблице в формате date.
Есть запрос вложенный вида
select to_date(bbb, 'DD-mon-YYYY HH24:MI:SS') ccc
from (
   select to_date(aaa, 'YYYYMMDDHH24') bbb from ...
)

который должен писать в этот столбец.
(Всё это внутри процедуры. [alter session там не катит].).

Трабла в том, что вложенный селект вовращает дату (bbb) как надо, т.е. в виде 27-окт-2006 19:00:00
(минуты и секунды там не нужны).

А наружний селект (ссс) уже отрезает часы!
Т.е. пишет 27-окт-2006 и всё!

Пробовал по всякому -- ни в какую!
27 ноя 06, 14:11    [3455477]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116275
erdn
Ситуация. Есть столбец в таблице в формате date.
Есть запрос вложенный вида
select to_date(bbb, 'DD-mon-YYYY HH24:MI:SS') ccc
from (
   select to_date(aaa, 'YYYYMMDDHH24') bbb from ...
)

который должен писать в этот столбец.
(Всё это внутри процедуры. [alter session там не катит].).

Трабла в том, что вложенный селект вовращает дату (bbb) как надо, т.е. в виде 27-окт-2006 19:00:00
(минуты и секунды там не нужны).

А наружний селект (ссс) уже отрезает часы!
Т.е. пишет 27-окт-2006 и всё!

Пробовал по всякому -- ни в какую!


Часы отрезает не Ваш наружный селект, а неявная конвертация даты в строку
в соответствии с NLS_DATE_FORMAT

Сравните

SQL> 
SQL> select to_char(bbb, 'DD-mon-YYYY HH24:MI:SS') ccc
  2  from (
  3     select to_date('2006050412', 'YYYYMMDDHH24') bbb from dual)
  4  /

CCC
---------------------------------------------------------------------------
04-mai-2006 12:00:00

SQL> 
27 ноя 06, 14:17    [3455550]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Почитайте внимательно, аргумент какого типа хочет date на вход...
27 ноя 06, 14:18    [3455555]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Jannny
Почитайте внимательно, аргумент какого типа хочет to_date на вход...
27 ноя 06, 14:18    [3455569]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
erdn
Member

Откуда:
Сообщений: 425
Jannny
Jannny
Почитайте внимательно, аргумент какого типа хочет to_date на вход...


А как и где мне это почитать?

select nls_date_format from v$nls_parameters
даёт DD-Mon-RRRR

И как мне вставить эти даты с часами?

(alter session set nls_date_format = 'DD-mon-YYYY HH24:MI:SS'
ругается в процедуре.
PLS-00103: Encountered the symbol "ALTER" when expecting one of the following:
...
далее обширный список.)
27 ноя 06, 14:26    [3455655]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
erdn
Member

Откуда:
Сообщений: 425
SQL> 
SQL> select to_char(bbb, 'DD-mon-YYYY HH24:MI:SS') ccc
  2  from (
  3     select to_date('2006050412', 'YYYYMMDDHH24') bbb from dual)
  4  /

CCC
---------------------------------------------------------------------------
04-mai-2006 12:00:00

SQL> 

у меня также.

И что делать, чтобы и селект вставлял с часами???
27 ноя 06, 14:27    [3455674]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
Mikst
Member

Откуда: Москва
Сообщений: 983
erdn


А как и где мне это почитать?


в документации, www.oracle.com

а так - это запрос возвращает столбец типа ДАТА. а вот как показать его на экран - уже дело твое и твоей программы.
27 ноя 06, 14:29    [3455699]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
Elic
Member

Откуда:
Сообщений: 29990
erdn
И что делать, чтобы и селект вставлял с часами???
Select не вставляет. Вставляет только хорошая трава
RTFM
27 ноя 06, 14:30    [3455706]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116275
erdn
у меня также.

И что делать, чтобы и селект вставлял с часами???


Куда вставлял ? (Гусары , молчать )
У Вас дата получилась правильно уже во внутреннем селекте.
А сейчас Вы возитесь с представлением этой даты в строковом виде
27 ноя 06, 14:31    [3455714]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
erdn
Member

Откуда:
Сообщений: 425
Elic
erdn
И что делать, чтобы и селект вставлял с часами???
Select не вставляет. Вставляет только хорошая трава
RTFM


Идиотские камменты просьба не давать.
Если нечего сказать -- лучше промолчать, имхо.
27 ноя 06, 14:36    [3455768]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
erdn
Member

Откуда:
Сообщений: 425
dmidek
erdn
у меня также.

И что делать, чтобы и селект вставлял с часами???


Куда вставлял ? (Гусары , молчать )
У Вас дата получилась правильно уже во внутреннем селекте.
А сейчас Вы возитесь с представлением этой даты в строковом виде


У меня именно
select to_date(bbb, 'DD-mon-YYYY HH24:MI:SS') ccc
from (
   select to_date(aaa, 'YYYYMMDDHH24') bbb from ...
)

to_DATE.

А не to_CHAR.

И нужна именно to_date!
27 ноя 06, 14:38    [3455783]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6915
erdn
(alter session set nls_date_format = 'DD-mon-YYYY HH24:MI:SS'
ругается в процедуре.
PLS-00103: Encountered the symbol "ALTER" when expecting one of the following:
...
далее обширный список.)

про дату ответили раньше меня...
а команды DDL напрямую в PL/SQL не пишут. EXECUTE IMMEDIATE Вам в помощь.
27 ноя 06, 14:39    [3455788]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6915
erdn
У меня именно
select to_date(bbb, 'DD-mon-YYYY HH24:MI:SS') ccc
from (
   select to_date(aaa, 'YYYYMMDDHH24') bbb from ...
)

to_DATE.

А не to_CHAR.

И нужна именно to_date!

Читайте ссылку Elic. to_date с типом дата на вход не работает
27 ноя 06, 14:40    [3455806]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116275
erdn
dmidek
erdn
у меня также.

И что делать, чтобы и селект вставлял с часами???


Куда вставлял ? (Гусары , молчать )
У Вас дата получилась правильно уже во внутреннем селекте.
А сейчас Вы возитесь с представлением этой даты в строковом виде


У меня именно
select to_date(bbb, 'DD-mon-YYYY HH24:MI:SS') ccc
from (
   select to_date(aaa, 'YYYYMMDDHH24') bbb from ...
)

to_DATE.

А не to_CHAR.

И нужна именно to_date!


Вы не понимаете. Дата не имеет формата. Для to_date Вам вполне достаточно внутреннего селекта

select to_date(aaa, 'YYYYMMDDHH24') bbb from ...
27 ноя 06, 14:41    [3455819]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
Mikst
Member

Откуда: Москва
Сообщений: 983
erdn

И нужна именно to_date!


Откуда вы такие упертые беретесь????

bbb - уже в формате DATE, _ЗАЧЕМ_ еще раз to_date ?

про execute immediate уже сказали, только его должен вызывать _клиент_ и только тогда, когда ему (клиенту) это надо. Хотя делайте как знаете, нам потом будет над чем еще посмеятся.
27 ноя 06, 14:42    [3455824]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116275
alex-ls
to_date с типом дата на вход не работает


Ваша мысль понятна, но выражена немного некорректно.
Не забывайте о неявных преобразованиях.
Сравните

SQL> select to_date(sysdate) from dual
  2  /

TO_DATE(
--------
27.11.06

SQL> ^C
27 ноя 06, 14:45    [3455853]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
erdn
Member

Откуда:
Сообщений: 425
Mikst
erdn

И нужна именно to_date!


Откуда вы такие упертые беретесь????

bbb - уже в формате DATE, _ЗАЧЕМ_ еще раз to_date ?

про execute immediate уже сказали, только его должен вызывать _клиент_ и только тогда, когда ему (клиенту) это надо. Хотя делайте как знаете, нам потом будет над чем еще посмеятся.


Если не писать никаких ф-й т.е. просто
select bbb 
from (
   select to_date(aaa, 'YYYYMMDDHH24') bbb from ...
)

То выдаётся дата без часов уже.

А мне нужна с часами!!!
27 ноя 06, 14:46    [3455869]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6915
dmidek
alex-ls
to_date с типом дата на вход не работает


Ваша мысль понятна, но выражена немного некорректно.
Не забывайте о неявных преобразованиях.
Сравните

SQL> select to_date(sysdate) from dual
  2  /

TO_DATE(
--------
27.11.06

SQL> ^C

ну мы люди деревенские не всегда понятно изъясняемся ;)
Но это был все-таки посыл почитать доку... после наезда на замечание Elic
27 ноя 06, 14:47    [3455882]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
dmidek
Для to_date Вам вполне достаточно внутреннего селекта

select to_date(aaa, 'YYYYMMDDHH24') bbb from ...

Это ещё если быть уверенным, что aaa типа date ;)
27 ноя 06, 14:48    [3455887]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6915
erdn
Если не писать никаких ф-й т.е. просто
select bbb 
from (
   select to_date(aaa, 'YYYYMMDDHH24') bbb from ...
)

То выдаётся дата без часов уже.

А мне нужна с часами!!!

не врать гусарам!

select bbb 
from (
   select to_date('2006123123', 'YYYYMMDDHH24') bbb from dual
)
27 ноя 06, 14:49    [3455898]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
erdn
Member

Откуда:
Сообщений: 425
Jannny
dmidek
Для to_date Вам вполне достаточно внутреннего селекта

select to_date(aaa, 'YYYYMMDDHH24') bbb from ...

Это ещё если быть уверенным, что aaa типа date ;)


Дата то он дата. Но мне нужен и внешний селект.

Это только надводная часть скрипта тут приведена. Чтобы не засорять лишним мОзги, у кого они есть, конечно.
27 ноя 06, 14:50    [3455905]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116275
Jannny
dmidek
Для to_date Вам вполне достаточно внутреннего селекта

select to_date(aaa, 'YYYYMMDDHH24') bbb from ...

Это ещё если быть уверенным, что aaa типа date ;)


Это место я не понял.

select to_date(sysdate,'YYYYMMDDHH24') from dual

ORA-01858: 

SQL> 
SQL> select to_date('2006110109', 'YYYYMMDDHH24') from dual
  2  /

TO_DATE('2006110109','YYYYMMDD
------------------------------
01.11.2006 09:00:00

SQL> 
27 ноя 06, 14:54    [3455945]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
erdn
Jannny
dmidek
Для to_date Вам вполне достаточно внутреннего селекта

select to_date(aaa, 'YYYYMMDDHH24') bbb from ...

Это ещё если быть уверенным, что aaa НЕ типа date ;)


Дата то он дата.
Как-то меня сегодня провоцирует на опечатки ;)))

Он не должен как раз быть датой ;) Нельзя to_date давать на вход дату ;)

Чтобы увидеть на экране строку, надо получить тип данных строка. Ферштейн? Чтобы превратить дату с строку используется to_char. Причем используется с вашего согласия или без оного. Вот без оного - это без часов, а вы напишите явный. Если Вам это, конечно, надо именно на вывод на экран.
27 ноя 06, 14:54    [3455947]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
Elic
Member

Откуда:
Сообщений: 29990
erdn
Чтобы не засорять лишним мОзги, у кого они есть, конечно.
Глянь в зеркало
27 ноя 06, 14:55    [3455954]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация даты  [new]
erdn
Member

Откуда:
Сообщений: 425
Прошу прощения у сообщества,
попробовал в другом клиенте тот-же SQL-запрос,
действительно, в данном случае глюк клиента.

Выдаёт как надо, с часами.

Ещё раз прошу прощения, снимаю шляпу, сыплю голову пеплом.
27 ноя 06, 14:55    [3455958]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить