1. Diferencia tipos de datos de fecha y hora (%Date, %Time, %TimeStamp, %PosixTime)
Puntos Clave
- %Date: Almacena solo fecha, valor lógico es días enteros desde el 31 de diciembre de 1840
- %Time: Almacena solo hora, valor lógico es segundos pasados desde medianoche (0-86399)
- %TimeStamp: Fecha y hora combinadas en formato YYYY-MM-DD HH:MM:SS.nnnnnnnnn
- %PosixTime: Marca de tiempo codificada de 64 bits, segundos transcurridos desde 1970-01-01 00:00:00
- Cada tipo tiene valores SqlCategory distintos: DATE, TIME, TIMESTAMP y POSIXTS
Notas Detalladas
Tipo de Datos %Date
El tipo de datos %Date almacena valores solo de fecha con una representación lógica como un entero que representa el número de días desde el 31 de diciembre de 1840 (día 0).
- Formato de almacenamiento: Representación entera compacta
- Rango de fechas: Soporta fechas desde 0001-01-01 hasta 9999-12-31
- Formato de visualización: Formatos específicos de configuración regional o formato ODBC (YYYY-MM-DD)
- SqlCategory: DATE
Tipo de Datos %Time
El tipo de datos %Time representa valores de hora del día, almacenando el valor lógico como el número de segundos pasados desde medianoche.
- Rango de valores: 0 a 86399 segundos
- Formato de visualización: HH:MM:SS
- SqlCategory: TIME
- Caso de uso: Aritmética y comparaciones de tiempo eficientes
Tipo de Datos %TimeStamp
El tipo de datos %TimeStamp combina componentes de fecha y hora en un solo valor.
- Formato: YYYY-MM-DD HH:MM:SS.nnnnnnnnn
- Precisión: Hasta nueve dígitos de segundos fraccionarios
- Conversión: Valor lógico obtenido del formato $HOROLOG usando $ZDATETIME(h,3)
- SqlCategory: TIMESTAMP
- Caso de uso: Registrar momentos exactos en el tiempo (formato de marca de tiempo ODBC estándar)
Tipo de Datos %PosixTime
El tipo de datos %PosixTime ofrece una representación alternativa de marca de tiempo usando codificación de época Unix.
- Almacenamiento: Entero con signo codificado de 64 bits que representa segundos transcurridos con precisión de microsegundos
- Época: 1970-01-01 00:00:00 (representado como 1152921504606846976)
- Rango de fechas: 0001-01-01 a 9999-12-31 (igual que otros tipos temporales)
- Precisión: Exactamente 6 dígitos de segundos fraccionarios
- SqlCategory: POSIXTS
- Nota: Las fechas antes de 1970 tienen valores negativos
SqlCategory y Conversión de Tipos
Cada tipo de datos tiene una clasificación SqlCategory distinta que controla operaciones de comparación.
- Funciones de conversión: Usar DATE(), TO_TIMESTAMP(), o TO_POSIXTIME() al mezclar tipos temporales en comparaciones o índices
- Impacto en diseño de esquema: La elección del tipo de datos temporal afecta la eficiencia de almacenamiento, rendimiento de consultas e interoperabilidad con sistemas externos
- Recomendaciones:
- %Date y %Time: Almacenamiento más compacto para valores solo de fecha u hora
- %TimeStamp: Marcas de tiempo de precisión legibles por humanos
- %PosixTime: Compatibilidad con marcas de tiempo Unix y cálculos temporales de alta precisión
Referencias de Documentación
Resumen de Preparación para el Examen
Conceptos Críticos a Dominar:
- Formatos de Almacenamiento Lógico: Saber que %Date almacena días desde el 31 de dic de 1840, %Time almacena segundos desde medianoche, %TimeStamp usa formato ODBC, %PosixTime usa marca de tiempo Unix codificada
- Valores SqlCategory: Memorizar las cuatro categorías distintas (DATE, TIME, TIMESTAMP, POSIXTS) y su impacto en comparaciones
- Diferencias de Precisión: %TimeStamp soporta hasta 9 dígitos de segundos fraccionarios, %PosixTime codifica exactamente 6 dígitos, %Time no tiene segundos fraccionarios
- Funciones de Conversión: Comprender cuándo usar DATE(), TO_TIMESTAMP(), TO_POSIXTIME() para conversión de tipos
- Selección de Caso de Uso: Saber cuándo elegir cada tipo - %Date para solo fechas, %Time para solo horas, %TimeStamp para marcas de tiempo generales, %PosixTime para compatibilidad Unix
Escenarios Comunes del Examen:
- Seleccionar el tipo de datos temporal apropiado para un requisito de aplicación dado
- Convertir entre diferentes formatos temporales usando funciones SQL
- Comprender las limitaciones de rango y precisión de cada tipo
- Reconocer la naturaleza codificada de valores %PosixTime
- Trabajar con variables especiales $HOROLOG y $ZTIMESTAMP en contexto SQL
Recomendaciones de Práctica Práctica:
- Crear tablas con columnas de cada tipo temporal e insertar datos de muestra
- Practicar conversiones entre tipos usando DATE(), TO_TIMESTAMP() y TO_POSIXTIME()
- Experimentar con precisión de segundos fraccionarios en %TimeStamp y %PosixTime
- Consultar datos temporales con diferentes modos de visualización (Logical, ODBC, Display)
- Comparar rendimiento y características de almacenamiento de cada tipo
- Trabajar con fechas antes de 1970 para comprender valores negativos de %PosixTime