2017-06-23 5 views
0

Dans SQL Server je une colonne qui stocke les dates de ce format:Conversion chaîne à Datetimeoffset dans SQL Server et Postgresql

2017-06-22T00: 43: 15 + 0300

comme cordes. Ce que j'essaie de faire est de transformer ces chaînes en données datatimeoffset réelles afin de les traiter comme des dates. Jusqu'à présent, j'ai trouvé plusieurs fonctions pour la conversion de datetimeoffset en d'autres formats d'horodatage, mais aucun de ceux-ci ne se réfère à des chaînes.
https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetimeoffset-transact-sql

Le même problème se pose exactement sur une base de données postgresql. Le mieux que j'ai réussi à faire jusqu'à maintenant est juste de tronquer le fuseau horaire et de convertir le reste de la chaîne en horodatage. Idéalement, je voudrais ne pas utiliser une telle transformation avec perte.

Répondre

1

Time Zone Offset dans Sql Server est représenté comme celui-ci

[+ | -] hh: mm:

Dans votre virgule de données est manquante dans la offset partie

DECLARE @stringtime VARCHAR(100)= '2017-06-22T00:43:15+0300' 

SET @stringtime = Reverse(Stuff(Reverse(@stringtime), 3, 0, ':')) 

SELECT Cast(@stringtime AS DATETIMEOFFSET(4)) 

Résultat:2017-06-22 00:43:15.0000 +03:00

+0

Cela fonctionne! Merci beaucoup! Avez-vous une idée s'il y a quelque chose d'équivalent pour postgresql? – lacrima

+0

@lacrima - Désolé, je ne sais pas 'Postgresql' –

+0

Peu importe! Merci quand même – lacrima

0

Postgres:

to_timestamp('2017-06-22T00:43:15+0300', 'YYYY-MM-DD HH24:MI:SS') 

vous pouvez essayer d'utiliser cette fonction postgres.

+0

Je souhaite conserver toutes les informations de l'horodatage. Cela ne fera que garder l'année, le mois et le jour. En fait je voudrais finir exactement avec le même format mais de type datetime, pas de chaîne – lacrima

+0

@lacrima, essayez ceci to_timestamp ('2017-06-22T00: 43: 15 + 0300', 'AAAA-MM-JJ HH24: MI : SS ') c'est la fonction postgresql – adn

+0

C'est ce que je faisais jusqu'à maintenant mais encore une fois je perds les informations de fuseau horaire – lacrima