Indicación de fecha y hora

Una marca de tiempo es un valor de seis o siete partes (año, mes, día, hora, minuto, segundo y segundo fraccionario opcional) con una especificación de zona horaria opcional, que representa una fecha y una hora.

La parte de tiempo de un valor de marca de tiempo puede incluir una especificación de segundos fraccionarios. El número de dígitos de la parte fraccionaria de los segundos se especifica mediante un atributo en el rango de 0 a 12, con un valor predeterminado de 6. La zona horaria es la diferencia en horas y minutos entre la hora local y la UTC. El rango de la hora de desfase es de -12 a 14, y el minuto de desfase es de 00 a 59. La zona horaria opcional se especifica en el formato ±th:tm, con valores que van de -12:59 a +14:00. Un tipo de datos de marca de tiempo es TIMESTAMP SIN ZONA HORARIA (denominado genéricamente TIMESTAMP) o TIMESTAMP CON ZONA HORARIA.

TIMESTAMP WITHOUT TIME ZONE

La representación interna de una marca de tiempo es una cadena de 7 a 13 bytes, cada uno de los cuales consta de dos dígitos decimales empaquetados. Los primeros 4 bytes representan la fecha, los 3 bytes siguientes la hora y los bytes restantes los segundos fraccionarios basados en la precisión de la marca de tiempo.

La longitud de una columna TIMESTAMP WITHOUT TIME ZONE (SIN ZONA HORARIA) como se describe en el catálogo es la longitud interna, que es de 7 a 13 bytes.

La longitud de una columna TIMESTAMP WITHOUT TIME ZONE, tal como se describe en el SQLDA, está en el rango de 19 a 32 bytes, lo que corresponde a la longitud de la representación de la cadena de caracteres del valor. Por ejemplo, una representación de cadena de caracteres de 19 bytes no tiene segundos fraccionarios; una representación de cadena de caracteres de 26 bytes tiene 6 dígitos de segundos fraccionarios; y una representación de cadena de caracteres de 29 bytes tiene 9 dígitos de segundos fraccionarios.

Una representación de cadena de caracteres debe tener una longitud real que no sea superior a 255 bytes y no debe ser un CLOB o DBCLOB.

TIMESTAMP WITH TIME ZONE

La representación externa de un valor TIMESTAMP WITH TIME ZONE es la marca de tiempo local seguida de la diferencia horaria. Por ejemplo, Nueva York está 5 horas por detrás de Londres durante el horario estándar, por lo que la hora de Nueva York «8:15» del 10-02-2010 puede representarse como « 2010-02-10-08.15.00-5:00 ». Esta marca de tiempo con valor de zona horaria representa un valor UTC « 2010-02-10-13.15.00 », que se obtiene restando la diferencia horaria de la marca de tiempo local.

La representación interna de una marca de tiempo es una cadena de 9 a 15 bytes que contiene la marca de tiempo UTC seguida de la zona horaria. Cada byte consta de 2 dígitos decimales empaquetados. El primer byte consta de dos dígitos decimales empaquetados que representan la hora de la zona horaria y el primer bit se utiliza para representar el signo del desfase de la zona horaria. El segundo byte de la zona horaria, que representa el minuto de la zona horaria, también consta de dos dígitos decimales empaquetados. Por ejemplo, la zona horaria « "-3 :30» se representa como X'8330' y la zona horaria «5:30» se representa como X'0530'.

La longitud de una columna de MARCA DE TIEMPO CON ZONA HORARIA, tal como se describe en el catálogo, es la longitud interna, que es de entre 9 y 15 bytes (una marca de tiempo de 7 a 13 bytes seguida de 2 bytes de zona horaria).

La longitud de una columna TIMESTAMP WITH TIME ZONE, tal como se describe en el SQLDA, es la longitud externa, que está en el rango de 147 a 160 bytes y corresponde a la longitud de la representación de la cadena de caracteres del valor. Por ejemplo, una representación de caracteres de 147 bytes no tiene segundos fraccionarios, y una representación de cadena de caracteres de 160 bytes tiene 12 dígitos de segundos fraccionarios, donde el componente de zona horaria es de 7 bytes.

Una representación de cadena de caracteres debe tener una longitud real que no sea superior a 255 bytes y no debe ser un CLOB o DBCLOB. Por lo tanto, DCLGEN define variables de cadena de longitud variable de 147 a 160 bytes para las columnas TIMESTAMP WITH TIME ZONE.