Forum Webscript.Ru

Программирование => Perl => Тема начата: classn от 26 Февраля 2002, 06:30:53

Название: Как из Oracle выбрать данные Date?
Отправлено: classn от 26 Февраля 2002, 06:30:53
При считывании колонки (поля) типа Date в Perl возвращается непонятно-чего (вроде бы только дата, а нужно еще и время)
и Localtime не понимает этого значения.
Как можно правильно считать данные?
Название: Как из Oracle выбрать данные Date?
Отправлено: NeoNox от 26 Февраля 2002, 11:30:45
http://valerim.narod.ru/Install_oracle_server_8_1_6_on_Linux.htm#wrongdates
Название: Как из Oracle выбрать данные Date?
Отправлено: classn от 26 Февраля 2002, 12:18:57
Вставил nls_date_format в init.ora, перегрузил Oracle,
а в Perl так и не понимает ораклевый формат даты.
Что еще можно сделать?
Можно, конечно, сделать, чтобы запрос возвращал строку, но не будешь же все время лезть в Oracle, чтобы посчитать дату (исходное время, от которого нужно вести расчет времени лежит в Oracle)
Название: Как из Oracle выбрать данные Date?
Отправлено: NeoNox от 26 Февраля 2002, 12:33:53
Цитировать
Что еще можно сделать?

Ты вставил nls_date_format = "YYYY-MM-DD"?
а минуты с секундами как? :)
Эх... форумы - рулят :)
http://www.oracle.com/forums/message.jsp?id=478156
Название: Как из Oracle выбрать данные Date?
Отправлено: classn от 26 Февраля 2002, 12:56:06
Минуты с секундами тоже.
Результат - тот же самый (не понимает).
Название: Как из Oracle выбрать данные Date?
Отправлено: classn от 26 Февраля 2002, 12:58:53
Говорит, что у меня сейчас
Thu Jan  1 06:00:26 1970.
Название: Как из Oracle выбрать данные Date?
Отправлено: NeoNox от 26 Февраля 2002, 13:04:23
Напиши сюда свой запрос к базе.
Название: Как из Oracle выбрать данные Date?
Отправлено: classn от 26 Февраля 2002, 13:16:56
SELECT date_task FROM task_time.
date_task - тип DATE.
Название: Как из Oracle выбрать данные Date?
Отправлено: NeoNox от 26 Февраля 2002, 13:27:51
Ты по ссылке ходил?!
http://www.oracle.com/forums/message.jsp?id=478156

Там пример:
select to_char(sysdate,\'YYYY/MM/DD HH24:MI:SS\') as Date_Time from dual;

И отрывок доки:
DATE_TIME
---------
28-MAR-01

TO_DATE convert whatever you specify the char string to date. Now internally the time is stored as whatever you have given as time in the char string(if the time is not specified it is stored as 00:00:00).

The displayed format of the date depends on the init. parameter(In your case it is YYYY/MM/DD and my case it is DD-MON-YY)

So even though you don\'t see the time because of the display format, the time still exists.

This query should help prove what I mean.

select to_Date(\'2001/03/28 12:30:55\',\'yyyy/mm/dd hh24:mi:ss\') datef, to_char(to_Date(\'2001/03/28 12:30:55\',\'yyyy/mm/dd hh24:mi:ss\'),\'yyyy/mm/dd hh24:mi:ss\') datetimef
from dual
Название: Как из Oracle выбрать данные Date?
Отправлено: classn от 26 Февраля 2002, 13:56:07
Т.е. ты предлагаешь, чтобы Oracle возвращал строку...
И ты считаешь, что всякий раз, когда мне понадобится дата, нужно будет лезть в Oracle и там ее расчитывать???
Ведь есть в Perle функции работы с датой.
Название: Как из Oracle выбрать данные Date?
Отправлено: NeoNox от 26 Февраля 2002, 14:02:19
Цитировать
Ведь есть в Perle функции работы с датой.

Я другого выхода не нашел...
А какая разница кто будет разбирать дату?
На производительности это никак не скажется.
Название: Как из Oracle выбрать данные Date?
Отправлено: classn от 27 Февраля 2002, 04:54:35
В общем-то ты прав. А ведь хотелось по-нормальному сделать, а "не так, как всегда"...
Спасибо за участие в решении проблемы.