sql - attunity - microsoft connectors v5 0 for oracle




Conversion de l'horodatage teradata(6) en datetime pour SQL Server (3)

C'est probablement parce que SQL Server ne supporte pas 6 chiffres fractionnaires, alors le cast en une chaîne avec 3 chiffres fractionnels sur Teradata:

To_Char(myDate,'yyyy-mm-dd hh:mi:ss.ff3')

Je travaille sur une exportation de données à partir de SSIS, et j'ai une erreur de troncature dans l'un de mes projets:

[TH27 [91]] Erreur: "Une erreur de troncature s'est produite, le nom de la colonne est" mydate "."

Dans l'entrée (Teradata), j'ai une colonne de type timestamp(6) , et dans la sortie dans SQL Server, j'ai une colonne de type datetime .

Comment puis-je le convertir de telle sorte que lorsque j'utilise SSIS, je ne reçois pas ce genre d'erreur?

Ma tentative (demande 1):

SELECT 
    column1,
    CAST(CAST(CAST(mydate AS DATE FORMAT 'YYYY-MM-DD') AS CHAR(10)) || ' ' 
             || TRIM(EXTRACT(HOUR FROM (mydate))) || ':'
             || TRIM(EXTRACT(MINUTE FROM (mydate))) || ':'
             || TRIM(CAST(EXTRACT(SECOND FROM (mydate)) AS INTEGER)) AS Date) AS mydate,
    column2
FROM table1

Mettre à jour:

La requête que j'ai écrite était dans la source Teradata voici un exemple de mon schéma SSIS


J'ai trouvé cette solution, qui fonctionne pour moi dans SSIS est de supprimer la dernière partie que nous avons dans timestamp(6) et de le convertir après cela en timestamp(0) .

select column1,
       CAST(SUBSTRING(CAST(mydate AS CHAR(26)) FROM 1 FOR 19) AS TIMESTAMP(0))
       as mydate 
from MyTable

Si mydate est l'horodatage, il suffit de le lancer:

select column1,
       cast(mydate as datetime) as column2
from MyTable

Ok, donc l'exécution de teradata signifie que vous n'avez pas de datetime ... Mais vous avez la date et l'heure:

select column1,
       cast(mydate as date) as column2date,
       cast(mydate as time) as column2time
from MyTable

Vous pouvez ensuite utiliser ssis pour manipuler les données afin de combiner la date et l'heure dans un datetime MSSQL





teradata