Сервер Оракл 10g 10.2.0.5.0, клиент Оракл 11g 11.2.0
ODAC версии 9.2.7
WIndows 7, Delphi XE Architect
Настройка NLS_LANG клиента RUSSIAN_RUSSIA.CL8MSWIN1251
Объект TOraQuery созданный и настроенный в дизайн-тайме в курсоре имеет поле типа TOraTimeStampField.
При работе с этим полем возникают следующие проблемы:
1. При получении значения поля в виде строки (метод TOraTimeStamp.AsString) в результирующей строке разделители полей даты не соответствуют локалу, например 17/04/2015 09:15:34,055000, хотя ожидается 17.04.2015 09:15:34,055000
2. При получении значения поля в виде даты (метод TOraTimeStamp.AsDateTime) в результирующем значении типа TDateTime миллисекунды обрезаются, хотя тип TDateTime поддерживает миллисекунды. Например, получается 17.04.2015 09:15:34,000, хотя ожидается 17.04.2015 09:15:34,055.
Пожалуйста подскажите, каким образом можно побороть указанные проблемы?
Проблема с TOraTimeStampField
Re: Проблема с TOraTimeStampField
Добрый день,
Формат отображения данных в Delphi зависит от региональных настроек самой системы. Чтобы поменять формат Вам достаточно изменить record TFormatSettings. Для отображения миллисекунд
необходимо использовать свойство AsSQLTimeStamp вместо AsDateTime.
Формат отображения данных в Delphi зависит от региональных настроек самой системы. Чтобы поменять формат Вам достаточно изменить record TFormatSettings. Для отображения миллисекунд
необходимо использовать свойство AsSQLTimeStamp вместо AsDateTime.
Код: Выделить всё
FormatSettings.DateSeparator := '.';
ShowMessage(SQLTimeStampToStr('dd/mm/yyyy HH:mm:ss:ZZZ', TOraTimeStampField(OraQuery1.Fields[0]).AsSQLTimeStamp));
Re: Проблема с TOraTimeStampField
Добрый день,
Формат отображения данных в Delphi зависит от региональных настроек самой системы. Чтобы поменять формат Вам достаточно изменить record TFormatSettings. Для отображения миллисекунд
необходимо использовать свойство AsSQLTimeStamp вместо AsDateTime.
Формат отображения данных в Delphi зависит от региональных настроек самой системы. Чтобы поменять формат Вам достаточно изменить record TFormatSettings. Для отображения миллисекунд
необходимо использовать свойство AsSQLTimeStamp вместо AsDateTime.
Код: Выделить всё
FormatSettings.DateSeparator := '.';
ShowMessage(SQLTimeStampToStr('dd/mm/yyyy HH:mm:ss:ZZZ', TOraTimeStampField(OraQuery1.Fields[0]).AsSQLTimeStamp));