Я пытаюсь подключиться из Google Apps Script (автономный скрипт для тестирования) к моей Azure SQL базе данных , используя Apps Script JDB C Сервис .
// connection string (dbUrl): jdbc:sqlserver://...
var conn = Jdbc.getConnection(dbUrl, user, userPwd);
var stmt = conn.createStatement();
var rst = stmt.executeQuery('SELECT [ID], [DatetimeColumn], [Datetime2Column], [DateColumn], [TimeColumn] FROM [gscript].[testTable]')
// etc.
У меня проблемы с отображением типов некоторых (более новых?) SQL типов данных даты / времени на сервере: datetime2
, date
, time
. Они сопоставлены и получены в моем сценарии (rst.getObject
) как NVARCHAR
, то есть как строка (подтверждается также метаданными набора результатов, см. Ниже).
Только datetime
работает - отображается как java.sql.Timestamp
.
При проверке базы данных и метаданных набора результатов , получая это:
Resultset - столбцы с SQL типом данных сервера datetime2
, date
, time
:
getColumnClassName: java .lang.String, getColumnType: -9, getColumnTypeName: nvarchar
База данных - информация о драйвере:
getDriverName: Microsoft SQL Сервер JDB C Драйвер 2.0 / getDriver Версия: 2.0.1803.100 / getDriverMajorVersion: 2 / getDriverMinorVersion: 0 getJDBCMajorVersion: 4 / getJDBCMinorVersion: 0
Кто-нибудь может помочь?
Проблема в младшей версии драйвера ? Можно ли каким-то образом установить более новый драйвер?
(В приложении My DBeaver для настольных ПК отображается драйвер Microsoft JDB C для SQL Сервер (MS SQL) версии 7.4.1, проблем с отображением типов при этом нет. таблица.)
Или необходимо избегать упомянутых типов данных и использовать вместо них только datetime
?
Или лучше придерживаться NVARCHAR и анализировать данные в сценарии?
Редактировать:
После некоторых дальнейших исследований я нашел это в SQL Сервер T- SQL ссылка : "Некоторые клиенты нижнего уровня не поддерживают типы данных time, date, datetime2 и datetimeoffset ... " Кажется, это описывает мою проблему. Вопрос в том, можно ли это как-то преодолеть в Google Apps Script?