Pregunta

Estoy intentando importar una columna de fechas desde una hoja de cálculo en Excel 2003 a SQL Server 2005 usando SSIS. Estoy en el Reino Unido, así que quiero fechas formateadas como dd / MM / aaaa.

Desafortunadamente, la columna en la hoja de cálculo contiene una mezcla de fechas almacenadas como cadenas en dd / MM / aaaa (con formato 'General' de Excel) así como fechas usando el formato 'Fecha' de Excel dd / MM / aaaa (con configuración regional 'Inglés reino unido)').

Así es como es y no puedo esperar que los usuarios puedan resolver esto por sí mismos.

Al mirar la hoja de cálculo, todas las fechas aparecen visualmente correctas, es decir, dd / MM / aaaa.

Estoy tratando de importar los valores en una columna varchar en una tabla de retención en la base de datos. Luego ejecuto un procedimiento almacenado que copia estos valores en la tabla adecuada que contiene una columna de fecha y hora.

El problema es que las fechas que se almacenan en la hoja de cálculo y usan el formato de Fecha se importan como MM / dd / aaaa en SQL Server y las fechas almacenadas como cadenas se importan como dd / MM / aaaa. Tengo IMEX = 1 en la cadena de conexión.

Tener fechas usando ambos formatos en la misma columna varchar obviamente está causando un problema cuando trato de ponerlo en una columna de fecha y hora, por lo tanto

SET DATEFORMAT MDY;    
SET DATEFORMAT DMY;

no sirven de nada.

¿Alguien sabe por qué el paquete SSIS importaría las fechas aparentemente correctas en la hoja de cálculo de Excel en SQL Server como MM / dd / aaaa de todos modos?

¿Hay alguna forma de forzar al paquete SSIS a importar las fechas como dd / MM / aaaa que funcionará con esta combinación de fechas como cadenas y celdas con formato de fecha aplicado?

¿Alguna otra idea ?!

Muchas gracias

Anthony

¿Fue útil?

Solución

Creo que has respondido tu propia pregunta. La importación de celdas con formato de fecha se trata como fechas y otras como una cadena. Posiblemente la configuración de fecha del servidor SQL sea MM / dd / aaaa y, por lo tanto, la conversión.

¿Por qué no intentas agregar un paso de conversión de datos en tu paquete SSIS y convertir todo en la columna en un solo formato: fecha y hora o cadena? Entonces estoy seguro de que el servidor SQL los manejará de la misma manera.

Raj

Otros consejos

Lo que funcionó para mí fue agregar IMEX = 1 a la cadena de conexión de Excel.

Entonces se verá así:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Folder1\Book1.xls;Extended Properties="EXCEL 8.0;HDR=YES;IMEX=1";
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top