T1.2: Designs Advanced Schemas

Knowledge Review - InterSystems IRIS SQL Specialist

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

Resumen de Preparación para el Examen

Conceptos Críticos a Dominar:

  1. 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
  2. Valores SqlCategory: Memorizar las cuatro categorías distintas (DATE, TIME, TIMESTAMP, POSIXTS) y su impacto en comparaciones
  3. Diferencias de Precisión: %TimeStamp soporta hasta 9 dígitos de segundos fraccionarios, %PosixTime codifica exactamente 6 dígitos, %Time no tiene segundos fraccionarios
  4. Funciones de Conversión: Comprender cuándo usar DATE(), TO_TIMESTAMP(), TO_POSIXTIME() para conversión de tipos
  5. 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

Report an Issue