top of page

Fechas y Horas

Estandarización de Fechas

Estandarización de Fechas y Horas

Estandarización de Fechas y Horas

En el proceso de Data Cleansing (depuración y validación de datos), uno de los aspectos críticos es garantizar la calidad de las fechas y horas en bases de datos de clientes o usuarios. Esto implica normalizar los formatos, corregir inconsistencias y asegurar que la información sea interpretable en distintos contextos.

1. Estándares de Fechas y Horas

a) ISO 8601 (Formato Recomendado)

  • El ISO 8601 es el estándar internacional para representar fechas y horas en formatos estructurados.

  • Formato recomendado:
    Fecha: YYYY-MM-DD (ejemplo: 2024-03-25)
    Fecha y hora (UTC): YYYY-MM-DDTHH:MM:SSZ (ejemplo: 2024-03-25T15:30:00Z)
    Fecha y hora con zona horaria: YYYY-MM-DDTHH:MM:SS±HH:MM (ejemplo: 2024-03-25T15:30:00-05:00)

Es decir que el formato recomendado tiene un formato tal y como:

  • Formato universal: AAAA-MM-DDTHH:MM:SS±HH:MM (ej: 2025-03-25T17:53:00-03:00)

Y este formato incluye:

  • Fecha en orden año-mes-día

  • Separador T entre fecha y hora

  • Zona horaria offset (ej: -03:00 para Argentina)

b) Formatos Comunes en Distintas Regiones

Cada país usa diferentes formatos para escribir fechas y horas, lo que puede generar errores si no se estandarizan:

Región                                                   Formato de Fecha                  Formato de Hora     

EE. UU.                                                MM/DD/YYYY                             12-hour (AM/PM)   

Europa (España, Alemania, etc.)   DD/MM/YYYY                             24-hour   

ISO 8601 (Internacional)                 YYYY-MM-DD                             24-hour

2. Mejores Prácticas

a) Validar Formatos Consistentes

  • Convertir todas las fechas a ISO 8601 o al formato estándar definido por la organización.

  • Evitar formatos ambiguos como 03/04/2024 (puede ser 3 de abril o 4 de marzo).

  • Checklist de formatos:: 

    • ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9](\.\d+)?)?([+-][0-2][0-9]:[0-5][0-9])?$  

      • (Regex para ISO 8601)

  • Reglas básicas:

    • Meses entre 01-12

    • Días acordes al mes (ej: 30 días en abril)

    • Horas en formato 24h

b) Manejar Zonas Horarias

  • Convertir todas las fechas y horas a UTC para almacenamiento y realizar conversiones según la zona horaria del usuario al mostrarlas.

  • Normalización:

    • Unificación de zonas horarias: Convertir todas las entradas a UTC+0 y almacenar offset original:

´´´sql

SELECT CONVERT_TIMEZONE('UTC', 'America/Argentina/Buenos_Aires', timestamp)  


c) Corregir Errores de Entrada

  • Detectar fechas imposibles (2024-02-30, 2023-13-05).

  • Identificar valores incorrectos (0000-00-00, 99/99/9999).

  • Establecer rangos de fechas válidos según el contexto (por ejemplo, evitar fechas de nacimiento en el futuro).

d) Detectar Datos Faltantes o Incompletos

  • Aplicar reglas para manejar fechas faltantes (NULL, N/A).

  • Completar fechas con datos faltantes si es posible (por ejemplo, si solo se tiene 2024-03, inferir que es 2024-03-01).

e) Convertir Fechas en Texto a Fechas Reales

Algunas bases de datos almacenan fechas como texto (varchar). Hay que convertirlas al tipo de dato correcto (DATE, DATETIME, TIMESTAMP).

3. Proceso de Estandarización de Fechas y Horas

  1. Identificación de formatos en la base de datos
    Revisar cómo están almacenadas las fechas (STRING, DATE, DATETIME, TIMESTAMP).
    Identificar si hay inconsistencias en los formatos.

  2. Conversión a un formato único
    Convertir todas las fechas al formato estándar elegido (preferiblemente ISO 8601).
    Si las fechas están en texto, convertirlas a un tipo de dato fecha.

  3. Corrección de errores comunes
    Sustituir valores inválidos.
    Eliminar caracteres no deseados (/, . o - si es necesario).
    Ajustar zonas horarias.

  4. Normalización de zonas horarias
    Convertir todas las fechas a UTC en el almacenamiento.
    Al momento de mostrar los datos, convertir a la zona horaria del usuario.

  5. Validación de la calidad de los datos
    Comparar datos antes y después de la transformación.
    Usar reglas de negocio para verificar coherencia.

4. Control de calidad según las reglas de negocio

a. Separación de componentes: En algunos casos se justifica la separación de componentes. Por ejemplo:

Campo Original                        Campos Normalizados

2025-03-25T17:53-03:00  fecha: 2025-03-25, hora: 17:53, zona: -03:00

b.Reglas del caso: Controlar la lógica de las fechas según el caso. Por ejemplo:

  • fecha_nacimientofecha_registro

  • hora_evento debe estar entre 08:00-20:00 (horario laboral)


5. Herramientas para Depuración y Validación de Fechas

a) Herramientas en Lenguajes de Programación

  • Python (Pandas y datetime)

import pandas as pd

df = pd.DataFrame({'fecha': ['03/25/2024', '25-03-2024', '2024/03/25']})
df['fecha_estandarizada'] = pd.to_datetime(df['fecha'], errors='coerce', dayfirst=True)
print(df)

  • SQL (Conversión y Validación en Bases de Datos)

SELECT
   fecha_original,
   STR_TO_DATE(fecha_original, '%d/%m/%Y') AS fecha_convertida
FROM tabla_usuarios;

b) Power BI y Power Query

  • En Power Query, usar la función Date.FromText() para convertir cadenas de texto en fechas.

  • Transformar fechas en distintos formatos y unificarlas.

c) Herramientas ETL (Extract, Transform, Load)

  • Talend y Alteryx permiten limpiar y estandarizar fechas en procesos ETL.

  • Data Wrangler de AWS tiene funciones avanzadas de normalización de fechas.

d) Plataformas de Data Quality

  • OpenRefine: permite detectar errores en fechas y corregir inconsistencias.

  • Trifacta: facilita la limpieza y transformación de datos antes de cargarlos en bases de datos.

Conclusión

Estandarizar fechas y horas es fundamental para evitar errores en bases de datos y garantizar coherencia en los análisis. La mejor práctica es utilizar ISO 8601 como formato estándar, almacenar datos en UTC, validar datos con reglas estrictas y usar herramientas como Python (Pandas), SQL, Power BI y herramientas ETL para automatizar el proceso.

bottom of page