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

Откуда:
Сообщений: 408
Народ, как можно преобразовать в дату, если у меня имеется отдельно день, месяц и год? Есть ли какие функции? Просто день, месяц и год -это данные которые вычисляются независимо др. от др. и их надо склеить чтобы получить дату.
4 ноя 08, 17:20    [6394398]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 108684
Надо аккуратненько склеить :-)
Возьмем усложненный случай с типом number, с varchar2 еще проще

SQL> select to_date(to_char(4)||'.'||to_char(11)||'.'||to_char(2008),'DD.MM.YYYY') from dual
  2  /
 
TO_DATE(TO_CHAR(4)||'.'||TO_CH
------------------------------
04.11.2008
 
SQL> 
4 ноя 08, 17:24    [6394420]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16286
SQL> create table x (dd varchar2(5), mm varchar2(10), yyyy varchar2(15));

Table created.

Elapsed: 00:00:00.37
SQL> create table y (y date);

Table created.

Elapsed: 00:00:00.03
SQL> insert into x values ('01', 'MAY', '1984');

1 row created.

Elapsed: 00:00:00.03
SQL> insert into y select to_date(dd||'-'||mm||'-'||yyyy,'DD-MON-YYYY') from x;

1 row created.

SQL> select * from y
  2  /

Y
---------
01-MAY-84

Elapsed: 00:00:00.04
SQL>
4 ноя 08, 17:27    [6394432]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
TVadim
Member

Откуда:
Сообщений: 408
спасибо, попробую
4 ноя 08, 17:28    [6394437]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
Windbloom
Member

Откуда: Москва
Сообщений: 48
У меня похожая ситуация, нужно сделать запрос по дате. Причем изначально дата хранится в таблице в нескольких полях: p_33 Number (2) 'число', p_34 Number (2) 'месяц', p_35 Number (4) 'год'
Полагаю, перевод формата данных с помощью функции to_date по представленной выше схеме в данном случае будет подходящим решешением? Поправьте, если не так.
6 янв 09, 18:01    [6651368]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
heldir
Member

Откуда: Запорожье->Киев->Montreal
Сообщений: 757
Windbloom

Полагаю, перевод формата данных с помощью функции to_date по представленной выше схеме в данном случае будет подходящим решешением?


Не совсем. Если по этим полям есть индексы, и эти индексы нужны для ускорения запроса, то приводить к дате - плохая идея. В этом случае лучше ставить условие на каждое поле.
6 янв 09, 18:19    [6651412]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
Windbloom,

у топикастера необходимо преобразовать строковое выражение в дату. Отсюда и to_date.
если вам надо сделать запрос по трем полям как вы указываете
автор
нужно сделать запрос по дате

возможно необходимо использовать extract входящей даты и формировать запрос в соответствии с полями в таблице.
6 янв 09, 18:22    [6651420]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
work-sa
Member

Откуда: Сухум
Сообщений: 263
Windbloom,
Возможно Вам более подойдет обратное преобразование:
select 
        extract( year  from sysdate) yyyy1,
        extract( Month from sysdate) mm1,
        extract( Day   from sysdate) dd1, -- или
        to_number(to_char(sysdate,'yyyy')) yyyy2,
        to_number(to_char(sysdate,'mm'))   mm2,
        to_number(to_char(sysdate,'dd'))   dd2
    from dual;
Но вариант с extract я сам бы не использовал. Ну не знаю я есть ли какие там особенности.
Может кто подскажет?
6 янв 09, 18:25    [6651429]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
Windbloom
Member

Откуда: Москва
Сообщений: 48
да, индексы по этим полям действительно есть. Как отдельно сравнивать поля, не очень понимаю: если, напрмер, надо записи с 01.01.2008 по 05.02.2008 тут возникнут трудности, т.к. в результате такого простого запроса:
select * from usr_usr_tab
where P_33 between 1 and 5 etc
я получу данные с 01.01 05.01 и с 01.02 по 05.02
С экстрактом не знаком, пороюсь в Oracle9i Database Online Documentation.
6 янв 09, 18:43    [6651487]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
Windbloom,

надо получить запрос по дате в периоде? Тогда собирайте дату из полей. и в between её.
6 янв 09, 18:58    [6651531]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29406
TVadim
у меня имеется отдельно день, месяц и год
да, индексы по этим полям действительно есть.
Вменяемость "дизайнера" вызывает большие сомнения
6 янв 09, 19:06    [6651546]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
Windbloom
Member

Откуда: Москва
Сообщений: 48
Не в курсе, насколько вменяемы разработчики. Но в один из составных индексов. (Create Unique Index Usr.UK#Usr_tab On Usr.Usr_tab) входит месяц и год совершения операции.
Получается, собирать дату по кускам и переводить ее из числового в нормальный формат даты в запросе не есть правильно?
6 янв 09, 19:39    [6651641]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: преобразование в формат даты  [new]
Antonnew
Member

Откуда:
Сообщений: 12
есть задача:
таблица с колонками - ID, dateb
Id - наименование чего либо
dateb - дата время, формат варчар

нужно из dateb получить только часы. Например 01.01.2001 15:55 - получить 15


PS и да я новичек и профан - для тех кто любит такое замечать))
9 ноя 19, 18:07    [22012818]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29406
Antonnew
Id - наименование чего либо
Срочно обратно в ясли.
Antonnew
я новичек и профан
Ну и зачем ты прячешься в чужих темах?
Antonnew
нужно из dateb получить только часы. Например 01.01.2001 15:55 - получить 15
RTFM Functions (FAQ)
9 ноя 19, 18:26    [22012825]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
Antonnew
Member

Откуда:
Сообщений: 12
Elic,
ну а если по делу? по существу вопроса?


у тебя первый авто и он не заводится - ты открываешь инструкцию по сборке авто и его фнкциям? - сомневаюсь....это тебе для примера, умник ...
9 ноя 19, 18:35    [22012826]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29406
Antonnew
у тебя первый авто и он не заводится - ты открываешь инструкцию по сборке авто и его фнкциям? - сомневаюсь....
И что, простофиля? Неужто ты полезешь в форумы?
9 ноя 19, 18:40    [22012829]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
Antonnew
Member

Откуда:
Сообщений: 12
Elic,
на этом форуме залется куча вопросов людьми которым нужна помощь.

вопрос что здесь делаешь ты? какая ценность от твоих подстебок новичков?

вопрос снят. решение найдено. а тебе лысый я не скажу, кури свои монускрипты
9 ноя 19, 19:17    [22012839]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
Antonnew
Member

Откуда:
Сообщений: 12
Elic,

у тебя 30 тыс сообщений на форуме. все такие же бесполезные?
9 ноя 19, 19:19    [22012840]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
-2-
Member

Откуда:
Сообщений: 14998
Antonnew
нужна помощь.
Если ты изучаешь, читай книги, потом спрашивай. Если ожидаешь подаяния, то проофессиональные попрошайки просят деньги.
Переписывать документацию из интернета в интернет за ради попрошаек не самое мотивированное занятие.
Antonnew
у тебя первый авто и он не заводится - ты открываешь инструкцию по сборке авто и его фнкциям?
Чувствуется, наболело. Богатый опыт последствий нечтения руководств?
10 ноя 19, 13:13    [22012989]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
Antonnew
Member

Откуда:
Сообщений: 12
-2-,

блин, да. на каждом форуме сидят типа профессионалы, которые только и могут что кидать ссылки на ФАК.
у которых тысячи обсолютно бесполезных комментариев....


для особо одаренный - твой комментарий абсолютно излишний. решение найдена было, писал выше


я знаю с какой целью я пришел на форум. Зачем ты здесь, засорять ленту тупыми комментариями?
10 ноя 19, 17:38    [22013075]     Ответить | Цитировать Сообщить модератору
 Re: преобразование в формат даты  [new]
-2-
Member

Откуда:
Сообщений: 14998
Antonnew
на каждом форуме сидят типа профессионалы, которые только и могут что кидать ссылки на ФАК
Все про свое, наболевшее. На автофоруме тебе предложили вытряхнуть пепельницу и вызвать техпомощь?!
Antonnew
твой комментарий абсолютно излишний
Почему же абсолютно. Без него нельзя в полной мере оценить бесценность твоего комментария о бесполезности моего.
10 ноя 19, 19:12    [22013091]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить