проблема с DateStyle

Строю запрос из delphi c помощью компонент PSQL (v 2.5.1)
select * from telegram where id_excav=2 and dt_send BETWEEN '13.05.2009' and '13.05.2009'

PSQLDATABAS.params

ConnectionTimeout=15
Port=5432
SSLMode=prefer
DatabaseName=+++++
UID=postgres
PWD=++++++
Host=localhost

сервер на WinXP
Региональные параметры даты DD.MM.YYYY

PostgreSQL configuration file

datestyle = 'sql, dmy'
lc_messages = 'Russian_Russia.1251' # locale for system error message
lc_monetary = 'Russian_Russia.1251' # locale for monetary formatting
lc_numeric = 'Russian_Russia.1251' # locale for number formatting
lc_time = 'Russian_Russia.1251' # locale for time formatting

выдает ошибку date/time field out of range

после изменения запроса на
select * from telegram where id_excav=2 and dt_send BETWEEN '2009.05.13' and '2009.05.13'

Все ок
Помогите избавится от ошибки

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Установите корректные

Установите корректные настройки datestyle.
Это можно сделать либо на лету через SET (http://postgresql.ru.net/manual/sql-set.html), либо в postgresql.conf (параметр datestyle). Какой конкретно стиль выбрать смотрите в документации.

datestyle = 'sql, dmy'

datestyle = 'sql, dmy' а это не корректно?
или я чего то не понимаю
где лучше это делать не сервере или локально?

Как лучше - решать вам. Если

Как лучше - решать вам. Если вы точно знаете, что никому другому не будет нужен другой формат даты и времени и уверены в том, что перенастройка сервера не составит проблем в будущем - используйте настройки в конфиге. Если же рядом с вами работают и другие люди, которым может потребоваться другой формат даты, а также если вы понесёте программу на другой сервер, где эти настройки в конфге делать проблематично, то лучше SET.

Какие значения корректны, а какие нет написано в документации.

makon=# show

makon=# show datestyle
makon-# ;
DateStyle
-----------
ISO, DMY
(1 запись)

Все правильно вроде?
'13.05.2009' -ошибка
'2009.05.13'- так проходит

Делаю: tmp=# show

Делаю:

tmp=# show datestyle;
 DateStyle 
-----------
 ISO, DMY
(1 запись)

tmp=# CREATE TABLE tmp1 (sample_date DATE);
CREATE TABLE

tmp=# INSERT INTO tmp1 VALUES ('13.05.2009');
INSERT 0 1
tmp=# select * from tmp1;
sample_date
-------------
2009-05-13
(1 rows)

tmp=# SET datestyle TO German;
SET
tmp=# select * from tmp1;
sample_date
-------------
13.05.2009
(1 rows)

Никаких ошибок не наблюдаю.


Я нашел причину применяемый

Я нашел причину применяемый компонент виноват

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023