Привет всем.
Хотелось обсудить странный глюк.
Дано.
Внешная база на 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
которую потом можно в X++ разобрать и превратить уже в utcDateTime
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();
то валится по ошибке на 2-м вызове (и в 2012-й и в 2009-й)
Давно его используем, но ни разу до сих пор не натыкались