Путаница в региональных настройках формата даты из PostgreSQL - PullRequest
0 голосов
/ 08 декабря 2011

Я работаю над приложением, для которого требуются следующие региональные настройки (Delphi 7 и PostgreSQL 9.0):

   1. DateSeparator:='/';
   2. TimeSeparator:=':';
   3. ThousandSeparator:=',';
   4. DecimalSeparator:='.';
   5. ShortDateFormat:='MM/dd/yy';
   6. ShortTimeFormat:='hh:mm:ss';

Мне нужно изменить региональные настройки только для моего приложения, а не для всей системы.

В OnCreate формы я установил вышеупомянутые разделители, и мои текущие системные разделители:

   1. DateSeparator='|';
   2. TimeSeparator='|';
   3. ThousandSeparator='|';
   4. DecimalSeparator='|';

(Это для целей тестирования.)

Сейчас в PostgresУ меня есть таблица, из которой я получаю даты для отображения в моем приложении, но каким-то образом разделитель даты, похоже, не работает (как видно на label1)!

enter image description here

Проверьте изображение.

enter image description here

Я запускаю запрос, чтобы получить даты из таблицы

                    Label1.Caption:=(Fields(1).Text);
                    Label2.Caption:=datetostr(Fields(1).Data) ;

Запрос

 select min(dat), max(dat) from diary where survey in (2008401) and event not in ('E','C','R') and region=6100;

, теперь тот жеdate, если я принимаю как .data, отличается в разделителе даты от .text dateseparator, почему это происходит?

Почему региональные настройки не применяются к label1.caption (как показано на рисунке)?

Ответы [ 2 ]

1 голос
/ 09 декабря 2011

хорошо, я нашел на одном сайте введите описание ссылки здесь для получения соответствующего формата все, что мне нужно было сделать, это получить запрос какselect to_char(min(dat),'mm/dd/yy'), to_char(min(dat),'mm/dd/yy') from diary where survey in (2008401) and event not in ('E','C','R') and region=6100;

Это дало мне правильный результат в формате, который я хотел

1 голос
/ 08 декабря 2011

DateToStr использует ShortDateFormat в качестве выходного формата. Вы не изменили это из набора MM/dd/yy изначально; Вы только изменили DateSeparator.

Я в замешательстве, хотя, почему вы хотите использовать (Fields(1).Text) (верно? Скобки вместо [] для индекса Fields?).

Если в БД настроено использование | в качестве разделителя даты, как это видно из изображения на экране, почему вы используете DateToStr? Похоже, что .Text получает информацию в формате, который вы хотите получить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...