Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > DateTime из Oracle выбирается урезанным


Автор: Royan 22.1.2008, 17:26
Сижу под ораклом, делаю запрос из PL/SQL dev:

Код

SELECT task_date_time FROM tasks

Выбирается табличка с примерно таким содержанием:
Цитата

1    9/4/2007 02:00:00
2    9/4/2007 03:00:00
3    1/21/2008 04:40:00


Тот же самый запрос из PHP выбирает следующее (доп. скобочки и прочее осталась от JSON'а)
Цитата

{"task_date_time":"04-SEP-07"},
{"task_date_time":"04-SEP-07"},
{"task_date_time":"21-JAN-08"}


Вопрос куда подевались часы, минуты, секунды? Кто-нибудь знает как это лечить?

Автор: skyboy 22.1.2008, 17:51
Цитата(Royan @  22.1.2008,  16:26 Найти цитируемый пост)
Кто-нибудь знает как это лечить?

да. смотреть код, который формирует "неправильные данные" и действовать по обстоятельствам.
интересно, какой ещё ответ можно получить, когда код не приведен на рассмотрение? или надежда была на то, что это общеизвестный баг, скажем, MySQL?

Автор: Royan 23.1.2008, 12:42
skyboy, Код здесь самый обыкновенный можно найти в любом букваре smile ну, например, тут: http://www.php.net/oci8
Короче ликбес. Оказывается, когда поле в Oracle имеет тип DATETIME то PHP возвращает строку, преобразованную к виду DD-Mon-YY, поэтому, чтобы получить значение поля в любом нужном формате нужно использовать функцию to_char в самом запросе, а именно писать вот так:


Код

SELECT to_char(task_date_time, 'DD-MON-YY HH24:MI:SS') FROM tasks


Enjoy!

PS 
Думаю достойно F.A.Q.'а

Автор: Vaulter 23.1.2008, 17:40
Royan, ЛикБез - ликвидация безграмотности

Автор: Royan 24.1.2008, 09:52
Vaulter, Прав, прав, прав

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)