Re: DateStyle не могу понять проблему. - Mailing list pgsql-ru-general
From | Dmitry Kruglov |
---|---|
Subject | Re: DateStyle не могу понять проблему. |
Date | |
Msg-id | 4F1E67AD.6010108@midisa.org Whole thread Raw |
In response to | DateStyle не могу понять проблему. (Dmitry Kruglov <info@midisa.org>) |
List | pgsql-ru-general |
Всем спасибо за помощь ... Ошибка пропала так же неожиданно как и появилась.... Стал вызывать функции Windows API, чтобы посмотреть что там вообще происходит и увидел что ошибка исчезла. До этого менял в SQL запросе местами день и месяц, 'dd/mm/yyyy' работало отлично. Как только делал такой формат 'mm/dd/yyyy' (на сервере именно так), появлялась ошибка. Сейчас ошибка исчезла и работает хорошо, но не факт, что она снова не появится. Гуляют настройки в винде или в драйвере, как обуздать не понятно. то так формирует дату: 'dd/mm/yyyy' то так 'mm/dd/yyyy' А думаю, что проблема не в винде, а в ODBC драйвере, который не понятно как инициализировать нужно. Как я понимаю драйвер должен получить настройки формата даты где? С сервера или где то на локальной машине? Ошибка происходит в момент записи даты в базу. И при отображении сообщения об ошибке, показывает правильный формат даты, который определен на сервере. Из этого следует ... нет согласованности ODBC драйвера и сервера. Что означает: "биндить" типизированные параметры ? Как это выглядит? Заранее спасибо. 24.01.2012 14:51, Viacheslav N Tararin пишет: > Добрый день. > Чтобы не зависеть от настроек действительно лучше формировать такую > строку: > > insert into "sprPartiy" ("IDUSER","DATAOFORMLEN","TYPESKLADA") values > (1,to_date('2012-01-23', 'yyyy-mm-dd'),1) > > Гарантировано дожна работать и такая > > insert into "sprPartiy" ("IDUSER","DATAOFORMLEN","TYPESKLADA") values > (1,'2012-01-23'::date,1) > > у меня никогда не было проблем и с такой (независимо от настроек) > > insert into "sprPartiy" ("IDUSER","DATAOFORMLEN","TYPESKLADA") values > (1,'2012-01-23',1) > > > Хотя правильней всего не клеить строки, а "биндить" типизированные > параметры, это тянет больше переработок, но избавляет от кучи проблем. > . > > 23.01.2012 18:30, Dmitry Kruglov пишет: >> Добрый день Вячеслав. >> >> Вношу корректировку к последнему письму. >> В одной винде работает нормально с DateStyle, в другой не работает >> вообще никак. С DateStyle и без него не работает. >> >> Открыл программу под отладчиком, посмотрел что там формируется. >> вот такая строка: >> insert into "sprPartiy" ("IDUSER","DATAOFORMLEN","TYPESKLADA") values >> (1,'1/23/2012',1) >> >> Пытаюсь выполнить запрос, говорит (не на русском языке), что '1/23/2012' >> выходит за пределы диапазона. Не могу выполнить. Хотя на сервере четко >> сказано SQL,MDY. >> >> Эта же программа на другой машине отлично выполняется. >> >> Поставил последние драйверы ODBC все равно та же история. >> >> Не могу понять где нужно посмотреть.... >> >> Вы имеете ввиду нужно написать запрос так? >> >> insert into "sprPartiy" ("IDUSER","DATAOFORMLEN","TYPESKLADA") values >> (1,to_date('2012-01-23', 'yyyy-mm-dd'),1) > >> >> Если даже так сработает .... то сильно много мест в программе нужно >> будет менять т.к. программу пишу 8 лет. В ней десятки тысяч строк >> программного кода .... >> >> Может будут другие предложения? >> >> >> 23.01.2012 22:42, Viacheslav N Tararin пишет: >>> Добрый день. >>> Со всех ОС которые у нас есть корректно работает строка формата >>> 'yyyy-mm-dd'. >>> Для верности рекомендую явно приводить с указанием формата >>> to_date('2012-12-21', 'yyyy-mm-dd') и ни от чего не зависиш. >>> >>> >>> 23.01.2012 17:00, Dmitry Kruglov пишет: >>>> Добрый вечер уважаемые программисты. >>>> >>>> Есть две винды XP SP3 (дистрибутивы совершенно одинаковые). >>>> >>>> На каждой винде стоят одинаковые драйверы для работы с сервером. >>>> Вот эти дрова ставлю: >>>> ftp://ftp.midisa.net/man2/psqlodbc.msi >>>> >>>> Сервер установлен на Linux Ubuntu. На сервере в базе данных прописано >>>> *DateStyle **SQL,MDY.* >>>> В программе формирую строку 'm/d/y' (показываю схематично), делаю >>>> запрос. >>>> >>>> Подключение идет через: PostgreSQL Unicode версия драйвера 8.04.02.00 >>>> >>>> В одной винде работает без ошибок, в другой ругается на формат даты. >>>> >>>> Если с сервака удаляю DateStyle то в той в которой было отлично, >>>> появляется ошибка формата даты, а в другой в которой не работала >>>> начинает работать. >>>> >>>> Подскажите пожалуйста, в чем может быть проблема? >>>> >>>> Может где то еще в винде какие то настройки дополнительные есть? >>>> >>>> Или может нужно программу как то хитро инициализировать? >>>> >>>> Инициализирую программу как обычно: >>>> _tsetlocale(LC_TIME, _T("")); >>>> _tsetlocale(LC_CTYPE, _T("")); >>>> >>>> Пишу на MFC. >>>> Программа одна и та же. >>>> >>>> Буду очень признателен за Вашу помощь. >>>> Спасибо. >>>> >>>> >>> >> > >
pgsql-ru-general by date: