2016-02-10 2 views
2

J'essaie d'interroger SQL Server à partir d'Apache Drill, mais je rencontre des problèmes lorsque les tables SQL Server contiennent des colonnes datetimeoffset (type SQL Server).interrogation de SQL Server à partir d'Apache Drill et datetimeoffset

Toute requête SELECT de Drill vers SQL Server sur ce genre de plomb de table à la réponse:

Erreur:

VALIDATION ERROR: Unknown SQL type -155

Je suis certain qu'il vient de la colonne datetimeoffset dans le tableau, puisque je testé le même type de requêtes sur des tables sans colonnes datetimeoffset et obtenu des résultats satisfaisants.

Je suis passé par la documentation de Drill (par exemple cette page https://drill.apache.org/docs/supported-data-types/) et a essayé de jeter la colonne datetimeoffset à SQL types pris en charge, mais rien ne fonctionnait et Drill Apache a continué à me répondre la même erreur.

Avez-vous une idée de comment passer à travers s'il vous plaît?

Répondre

0

Je peux confirmer qu'il est en fait un problème avec DATETIMEOFFSEThttps://msdn.microsoft.com/en-us/library/bb677267.aspx ne pas être bien géré par la bibliothèque JDBC.

résolution Seulement que je connais actuellement est de convertir les données sur la sortie comme ceci:

,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 

Vous pouvez choisir de ne sortie UTC ou heure locale, mais dans mon expérience DATETIMEOFFSET a été choisie parce que les deux étaient va être nécessaire.