21.01.2016, 17:24 | #1 |
Участник
|
Ошибки с типом dateTime при работе через ODBC при использовании класса ResultSet
Привет всем.
Хотелось обсудить странный глюк. Дано. Внешная база на SQL Server (версия Microsoft SQL Server 2014 - 12.0.4213.0 (X64) ) В табличке хранятся данные с типом dateTime SQL Management studio показывает значение 2016-01-20 13:28:00.000 При подключении из Аксапты через ODBC делаем простейший запрос select from Затем при чтении метод ResultSet.getDateTime() возвращает какую-то фигню. Отладчик в аксапте показывает значение CL.01.2016 20:00:13 то же самое выводится в инфолог. попробовал доставать значения даты времени по кускам выводится так (u - переменная с типом utcdateTime, в которую начитали результат): dateTimeUtil::date(u) = CL.01.2016 dateTimeUtil::year(u) = 2016 dateTimeUtil::month(u) = 1 dateTimeUtil::day(u) = 32 dateTimeUtil::time(u) = 72013 dateTimeUtil::hour(u) = 20 dateTimeUtil::minute(u) = 0 dateTimeUtil::second(u) = 13 dateTimeUtil::toStr(u) = 2016-01-256T20:00:13 Налицо какое то переполнение. Самое интересно что значения dateTimeUtil::toStr(u) и dateTimeUtil::day(u) друг с другом не согласуются. Встречался ли кто-нибудь с таким эффектом ? Из-за чего это бывает ? Как лечить ? P.S. Для себя обошел это глюк за счет того что выбирал не само поле FieldName, а строковую функцию от него X++: convert(char(19),[FieldName], 20) AS FieldName P.P.S. Глюк воспроизводится на ax2009 билды 5.0.1600.3090 5.0.1500.4570 (RU7) На 2012 R3 не воспроизводится (аосы стоят на одном сервере Win2012 и используют один и тот же ODBC датасорс) P.P.P.S. Интересно, что ResultSet не позволяет дважды подряд вызвать метод получения значения. Например однократный вызов X++: ResultSet.getDateTime(); X++: ResultSet.getDateTime(); ResultSet.getDateTime(); Давно его используем, но ни разу до сих пор не натыкались Последний раз редактировалось Logger; 21.01.2016 в 17:58. |
|