【发布时间】:2020-07-12 23:36:56
【问题描述】:
我正在尝试使用 Apps Script JDBC Service 从 Google Apps 脚本(现在用于测试的独立脚本)连接到我的 Azure SQL 数据库。
// 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。
检查数据库和结果集元数据时,得到:
结果集 - SQL Server 数据类型为datetime2、date、time 的列:
getColumnClassName:java.lang.String,getColumnType:-9,getColumnTypeName:nvarchar
数据库 - 驱动信息:
getDriverName:Microsoft SQL Server JDBC 驱动程序 2.0 / getDriverVersion:2.0.1803.100 /getDriverMajorVersion:2 /getDriverMinorVersion:0 getJDBCMajorVersion: 4 / getJDBCMinorVersion: 0
有人可以帮忙吗?
驱动版本低有问题吗?能否以某种方式安装较新的驱动程序?
(我的 DBeaver 桌面应用程序显示 Microsoft JDBC Driver for SQL Server (MSSQL) 版本 7.4.1,同一张表没有类型映射问题。)
或者是否有必要避免提到的数据类型而只使用datetime?
还是使用 NVARCHAR 并解析脚本中的数据是更好的做法?
编辑:
经过进一步研究,我在SQL Server T-SQL reference 中发现了这一点:“一些下层客户端不支持时间、日期、datetime2 和 datetimeoffset 数据类型...”正在描述我的问题。问题是,这可以在 Google Apps 脚本中以某种方式克服吗?
【问题讨论】:
标签: sql-server google-apps-script jdbc azure-sql-database mssql-jdbc