SSIS - SQL Server Integration Services - Validar Fechas

 
Vista:

Validar Fechas

Publicado por Carmen (1 intervención) el 16/07/2012 17:13:01
Hola espero me puedan orientar
Estoy subiendo un archivo de excel a sql por medio de un dts.

El detalle es que el archivo de excel cuenta con un campo de fecha el cual no tiene el mismo
formato en todos los registros. Hay varios con formato mm/dd/yyyy y otros con dd/mm/yyyy

Al vaciarlos en una tabla me los inserta incorrecto.

Asi debe quedar:

06/18/2012 Este es correcto 18 de Julio

10/07/2012 Este debe quedar como 10 de Julio


Hay alguna forma en el dts de que yo pueda validar esa situacion? que toda la deje en el mismo formato.

El archivo de excel que es la causa de todo este problema no tengo permitido abrirlo ni modificarle el formato.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Validación y ajuste de fechas con diferentes formatos durante la carga desde Excel

Publicado por Alejandro (60 intervenciones) el 23/02/2024 19:49:26
Carmen, en el caso de que no puedas modificar el formato del archivo Excel y necesites manejar las fechas con diferentes formatos durante la carga mediante un DTS (SQL Server Integration Services), puedes seguir estos pasos para realizar una validación y ajuste de formato en el DTS:

1. Configuración de la fuente de datos:
- Configura la fuente de datos para la hoja de Excel en tu DTS.
- Asegúrate de que el campo de fecha se carga como cadena (`DT_STR` o `DT_WSTR`) para mantener el formato original.

2. Script Component para validación y ajuste:
- Agrega un "Script Component" después de la fuente de datos (donde obtienes los datos del archivo Excel).
- Utiliza el "Script Component" como una transformación para realizar la validación y ajuste de las fechas.

3. Código en el Script Component:
- En el "Script Component", accede al campo de fecha y utiliza código C# o VB.NET para analizar la fecha y ajustarla al formato deseado.
- Puedes utilizar la función `DateTime.TryParseExact` para intentar analizar la fecha con diferentes formatos y ajustarla según sea necesario.

Ejemplo (C#):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    string fechaOriginal = Row.FechaOriginalColumn; // Reemplaza con el nombre real de tu columna de fecha
 
    DateTime fecha;
    if (DateTime.TryParseExact(fechaOriginal, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out fecha))
    {
        // La fecha está en formato MM/dd/yyyy
        Row.FechaAjustada = fecha.ToString("dd/MM/yyyy");
    }
    else if (DateTime.TryParseExact(fechaOriginal, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out fecha))
    {
        // La fecha está en formato dd/MM/yyyy
        Row.FechaAjustada = fecha.ToString("dd/MM/yyyy");
    }
    else
    {
        // Manejar el caso en el que no se pudo analizar la fecha
        Row.FechaAjustada = "Fecha no válida";
    }
}

4. Configuración de la salida del Script Component:
- Configura la salida del "Script Component" para incluir la fecha ajustada y otros campos según sea necesario.

5. Carga en destino SQL Server:
- Continúa con la carga de datos en tu destino SQL Server.

Este enfoque te permite realizar una validación y ajuste de las fechas durante la carga sin modificar el formato original del archivo Excel. Asegúrate de adaptar el código del script según tus necesidades específicas y el lenguaje seleccionado (C# o VB.NET).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar