我正在尝试从Apache Drill查询SQL Server,但是当SQL Server表包含datetimeoffset
(SQL Server类型)列时,我遇到了一些问题。
在这种表上从Drill到SQL Server的任何SELECT查询都会导致响应:
错误:
验证错误:未知的SQL类型-155
我确信它来自表中的datetimeoffset列,因为我在没有datetimeoffset列的表上测试了相同类型的查询,并获得了令人满意的结果。
我查看了Drill的文档(例如此页面https://drill.apache.org/docs/supported-data-types/),并尝试将datetimeoffset
列转换为SQL支持的类型,但没有任何效果,Apache Drill一直在回答我同样的错误。
你知道如何解决这个问题吗?
答案 0 :(得分:0)
我可以确认它实际上是一个问题DATETIMEOFFSET
https://msdn.microsoft.com/en-us/library/bb677267.aspx没有得到JDBC库的良好处理。
我目前所知道的解决方案只是在出路时转换数据:
,CAST(my_datetimeoffset_col AS DATETIME2) as datetime_local
,CAST(SWITCHOFFSET(my_datetimeoffset_col, 0) AS DATETIME2) as datetime_utc
,DATEPART(TZ, my_datetimeoffset_col) as datetime_tz
您可以选择仅输出UTC或当地时间,但根据我的经验DATETIMEOFFSET
被选中,因为两者都将被需要。