tipo obtener insertar hora formato fecha ejemplo dato sql sql-server ssis teradata

obtener - Conversión de la marca de tiempo de teradata(6) a fecha y hora para SQL Server



obtener fecha sql server (4)

Estoy trabajando en una exportación de datos de SSIS, y tengo un error de truncamiento en uno de mis proyectos:

[TH27 [91]] Error: "Ocurrió un error de truncamiento. El nombre de la columna es ''mydate''."

En la entrada (Teradata), tengo una columna de tipo timestamp(6) y en la salida en SQL Server, tengo una columna de tipo datetime .

¿Cómo puedo convertirlo de manera que cuando uso SSIS no obtenga este tipo de error?

Mi intento (solicitud 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

Actualizar:

La solicitud que escribí estaba en la fuente Teradata aquí hay un ejemplo de mi esquema SSIS


Encontré esta solución, que para mí funciona en SSIS es eliminar la última parte que tenemos en timestamp(6) y convertirla después de eso en timestamp(0) .

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


No use la fecha de colada (hora), use convertir. Esto funcionará solo en su máquina;) Tan pronto como tenga que tratar con múltiples configuraciones de cultura, esto puede fallar debido a las diferentes representaciones de cadena del formato de fecha.

Fuera de los Estados Unidos, se ejecutará muy pronto en tales errores. Muchos sistemas de desarrollo utilizan la configuración de EE. UU. Para facilitar la búsqueda de mensajes de error, pero el sistema de clientes se ejecuta en la configuración de idioma local y, en el peor de los casos, en diferentes configuraciones de idioma para el sistema operativo y la base de datos. La mejor forma de manejar esto es usar el formato ISO (120) internamente.


Probablemente sea porque SQL Server no admite 6 dígitos fraccionarios, por lo tanto, transfiéralo a una cadena con 3 dígitos fraccionarios en Teradata:

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


Si mydate es la marca de tiempo, simplemente mydate :

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

Ok, entonces ejecutar en teradata significa que no tienes fecha y hora ... Pero tienes fecha y hora:

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

A continuación, puede utilizar ssis para manipular los datos para combinar la fecha y la hora en una fecha de MSSQL