Formato y análisis de valores de fecha y hora como series de caracteres

Esta sección ofrece información sobre cómo puede especificar el formato de fecha y hora utilizando una serie de caracteres de letras de patrón.

Cuando convierte una fecha u hora a una serie, debe aplicar un patrón de formato que dirija la conversión. Aplique el patrón de formato para convertir una fecha o una hora a una serie, o para analizar una serie como una fecha u hora.

Durante la conversión (por ejemplo, de una fecha y hora a una serie) se sustituye un patrón o un conjunto de símbolos por su origen equivalente. El diagrama siguiente muestra cómo se utiliza un patrón para formatear un origen de fecha y hora para generar una salida en forma de serie.

Este diagrama muestra la serie de salida como resultado de un origen de fecha y hora y un patrón de formato.

Cuando se analiza una serie (por ejemplo, al convertirla en una fecha y hora), se utiliza el patrón o el conjunto de señales para determinar qué parte de la fecha y hora de destino está representada por qué parte de la serie. El diagrama siguiente muestra se lleva a cabo esta acción.

Este diagrama muestra la salida de fecha y hora como resultado de un origen de datos de serie y un patrón de formato.

Sintaxis

El patrón de la expresión se define mediante:

donde:
símbolo
es un carácter del juego de caracteres adDeEFGhHIkKmMsSTUwWyYzZ.
serie
es una secuencia de caracteres encerrada entre comillas simples. Si se necesitan apóstrofos en la serie, utilice dos ").

Caracteres para dar a la fecha y hora el formato de una serie de caracteres

La tabla siguiente lista los caracteres que puede utilizar en un patrón para dar formato o para analizar series en relación con una fecha y hora. La tabla va seguida de algunas notas que explican más cosas de los ejemplos de la tabla.

Símbolo Significado Presentación Ejemplos
a marcador de AM o PM Texto Entrada am, AM, pm, PM. Salida AM o PM
d día del mes (1-31) Número 1, 20
dd día del mes (01-31) Número 01, 31
D día del año (1-366) Número 3, 80, 100
DD día del año (01-366) Número 03, 80, 366
DDD día del año (001-366) Número 003
e día de la semana (1-7)1 Número 2
EEE día de la semana1 Texto Mar
EEEE día de la semana1 Texto Martes
F día de la semana del mes (1-5)2 Número 2
G Era Texto BC o AD
h hora AM o PM (1 a 12) Número 6
hh hora en am o pm (01-12) Número 06
H hora del día en formato de 24 horas (0-23)3 Número 7
HH hora del día en formato de 24 horas (00-23)3 Número 07
I Fecha/hora ISO8601 (hasta yyyy-MM-dd'T'HH:mm:ss. SSSZZZ)4 Texto 2006-10-07T12:06:56.568+01:00
IU Fecha y hora ISO8601 (similar a I, pero ZZZ con la salida "Z" si el huso horario es +00:00)4 Texto 2006-10-07T12:06:56.568+01:00, 2003-12 -15T15:42:12.000Z
k hora del día en formato de 24 horas (1-24)3 Número 8
k hora del día en formato de 24 horas (01-24)3 Número 08
K hora AM o PM (0 a 11) Número 9
KK hora en am o pm (00-11) Número 09
m minuto Número 4
mm minuto Número 04
M número del mes Número 5, 12
MM número del mes Número 05, 12
MMM nombre del mes Texto Ene, Feb
MMMM nombre del mes Texto Enero, Febrero
s segundos Número 5
ss segundos Número 05
S décimas de segundo5 Número 7
SS centésimas de segundo5 Número 70
SSS milisegundos5 Número 700
SSSS 0,0001 segundos5 Número 7000
SSSSS 0,00001 segundos5 Número 70000
SSSSSS 0,000001 segundos5 Número 700000
T Hora ISO8601 (hasta HH:mm:ss.SSSZZZ)4 Texto 12:06:56.568+01:00
TU Hora ISO8601 (similar a T, pero el huso horario de +00:00 se sustituye por 'Z')4 Texto 12:06:56.568+01:00, 15:42:12.000Z
w semana del año6 Número 7, 53
ww semana del año6 Número 07, 53
W semana del mes7 Número 2
yy año8 Número 06
yyyy año8 Número 2006
YY año: utilizar sólo con semana del año6 Número 06
YYYY año: utilizar sólo con semana del año6 Número 2006
zzz huso horario (nombre abreviado) Texto GMT
zzzz huso horario (nombre completo) Texto Hora media de Greenwich
Z huso horario (+/-n) Texto +3
ZZ huso horario (+/-nn) Texto +03
ZZZ huso horario (+/-nn:nn) Texto +03:00
ZZZU huso horario (igual que ZZZ, se sustituye "+00:00" por "Z") Texto +03:00, Z
ZZZZ huso horario (GMT+/-nn:nn) Texto GMT+03:00
ZZZZZ huso horario (igual que ZZZ, pero sin el signo de dos puntos) (+/-nnnn) Texto +0300
' escape para texto   'Texto de usuario'
" (dos apóstrofos) un apóstro dentro de un texto de escape   'o"clock' (en punto)

La presentación del objeto de fecha y hora depende de los símbolos que especifique.

Notas: Las notas siguientes se aplican a la tabla anterior.
  1. Puede especificar los valores siguientes en el campo día de la semana:
    • 1 - Domingo
    • 2 - Lunes
    • 3 - Martes
    • 4 - Miércoles
    • 5 - Jueves
    • 6 - Viernes
    • 7 - Sábado
  2. El 12 de julio de 2006 es el segundo miércoles de julio y se puede expresar como 2006 julio miércoles 2 utilizando la serie de formato yyyy MMMM EEEE F. Observe que este formato no representa el miércoles de la semana 2 de julio de 2006, que es el 5 de julio de 2006; la serie de formato para esta fecha sería yyyy MMMM EEEE W.
  3. Los campos de 24 horas pueden dar como resultado una hora ambigua si se especifica un campo am/pm conflictivo.
  4. Consulte el apartado Símbolos de fecha y hora ISO8601, I y T.
  5. Las fracciones de segundo se representan con una S mayúsculas. La longitud debe coincidir implícitamente con el número de símbolos de formato de la entrada. La serie de formato ss SSS o ss.SSS, por ejemplo, representan segundos y milisegundos. Sin embargo, la serie de formato ss.sss representa un campo repetido (de segundos); el valor después del punto (.) se toma como un campo de segundos, no como fracciones de segundo. La salida se trunca en la longitud especificada.
  6. En ESQL, el primer día del año se supone que está en la primera semana, por lo que el 1 de enero siempre está en la semana 1. Esto puede dar como resultado que fechas especificadas relativas a un año puedan estar de hecho en un año distinto. Por ejemplo, "Lunes semana 1 2005" analizado utilizando "EEEE' semana 'w' 'YYYY" da la fecha 2004-12-27, porque el lunes de la primera semana de 2005 es en realidad una fecha de 2004.

    Si utiliza el símbolo y, el ajuste no se realiza y pueden producirse resultados imprevisibles para fechas cercanas al final del año. Por ejemplo, si se formatea la serie de caracteres "2005 01 Lunes":

    • Lunes de semana 1 de 2005 utilizando la serie de formato "YYYY ww EEEE" se interpreta correctamente como 27 de diciembre de 2004
    • Lunes de semana 1 de 2005 utilizando la serie de formato "yyyy ww EEEE" se interpreta incorrectamente como 27 de diciembre de 2005
  7. Es posible que la primera y la última semana de un mes incluyan días de meses contiguos. Por ejemplo, Lunes 31 de julio de 2006 se puede expresar como Lunes de la semana uno de agosto de 2006, que es 2006 08 1 Lunes utilizando la serie de formato yyyy MM W EEEE.
  8. El año se maneja como un caso especial.
    • En la salida, si la cuenta de y es 2, el año se trunca a 2 dígitos. Por ejemplo, si yyyy produce 1997, yy producirá 97.
    • En la entrada, para años de 2 dígitos, la ventana de siglo se ha fijado en 53. Por ejemplo, una fecha de entrada de 52 da como resultado el valor de año 2052, mientras que una fecha de entrada de 53 da un año de salida 1953, y 97 da 1997.

Símbolos de fecha y hora ISO8601, I y T

Si los valores de fecha y hora cumplen con el estándar ISO8601:2000 para la representación de fechas y horas, debe considerar la utilización de los símbolos de formato I y T, que coinciden con el subconjunto siguiente del estándar ISO8601.

Utilice los símbolos de formato I y T por cuenta propia:

La tabla siguiente muestra cómo se relaciona el formulario de salida con el tipo de datos lógicos.

Tipo de datos de modelo lógico Tipo de datos ESQL Formato de salida
xsd:dateTime TIMESTAMP o GMTTIMESTAMP yyyy-MM-dd'T'HH:mm:ss.SSSZZZ
xsd:date DATE yyyy-MM-dd
xsd:gYear INTERVAL yyyy
xsd:gYearMonth INTERVAL yyyy-MM
xsd:gMonth INTERVAL --MM
xsd:gmonthDay INTERVAL --MM-dd
xsd:gDay INTERVAL ---dd
xsd:time TIME / GMTTIME 'T'HH:mm:ss.SSSZZZ
Nota:
  • En la salida, tanto I como T aceptan '+00:00' y 'Z' para indicar una diferencia horaria de cero de la hora UTC (Coordinated Universal Time), pero en la salida siempre se genera '+00:00'. Si desea que siempre se genere 'Z' en la salida, utilice los símbolos de formato IU o TU.
  • ZZZ siempre genera '+00:00' en la salida para indicar una diferencia horaria de cero con respecto a la hora UTC (Coordinated Universal Time). Si desea que siempre se genere 'Z' en la salida, utilice ZZZU.

Utilizando el formato UTC en la salida

Un elemento o atributo de tipo lógico xsd:dateTime o xsd:time que contiene una fecha y hora como serie puede especificar UTC (Coordinated Universal Time) utilizando el símbolo Z o el huso horario +00:00. En la entrada, el analizador MRM recuerda el formato UTC de estos elementos y atributos. En la salida, puede especificar si se visualiza Z o +00:00 utilizando la propiedad Formato de fecha y hora predeterminado del elemento o el atributo. O bien, puede conservar el formato UTC de la entrada seleccionando la propiedad del conjunto de mensajes Utilizar formato UTC de entrada en la salida. Si se selecciona esta propiedad, se conservará el formato UTC en el mensaje de salida y prevalecerá sobre el formato implícito en la propiedad de formato de fecha y hora.

Descripción del horario de verano y de la función CAST

Cuando el intermediario se ejecuta en un huso horario distinto de la hora media de Greenwich, calcula el desplazamiento de horario de verano (DST) en las horas que le proporciona la función CAST. Para que CAST calcule el desplazamiento correctamente, la hora pasada a CAST debe tener un huso horario asociado a ella, como un parámetro Z. Si no se asocia ningún huso horario con el valor pasado, la hora se convierte en hora media de Greenwich; no se trata como una indicación de fecha y hora local.

Asimismo, cuando se utiliza CAST para convertir una serie en un valor horario, el desplazamiento DST se calcula utilizando la fecha de sistema actual. Para convertir una serie en una variable de hora y calcular DST para una fecha específica, también debe especificar la fecha.

Por ejemplo, si timeValue='10:00:00', el código siguiente, ejecutado en un intermediario que está en la zona de hora central, convierte la hora a la hora media de Greenwich, porque no se especifica ningún identificador de huso horario:
DECLARE castTime TIME;
SET castTime = CAST (timeValue AS TIME FORMAT timePattern)
La hora no se convierte otra vez a la hora media de Greenwich si se utiliza la variable castTime en cualquier código subsiguiente, por ejemplo
CAST(castDate, castTime AS GMTTIMESTAMP);

Ejemplos

La tabla siguiente muestra algunos ejemplos de formato de fecha y hora.

Patrón de formato Resultado
"yyyy.MM.dd 'a las' HH:mm:ss ZZZ" 2006.07.10 a las 15:08:56 -05:00
"EEE, MMM d, "yy" Mié, Julio 10, '06
"h:mm a" 8:08 PM
"hh 'en punto' a, ZZZZ" 09 en punto AM, GMT+09:00
"K:mm a, ZZZ" 9:34 AM, -05:00
"yyyy.MMMMM.dd hh:mm aaa" 1996.Julio.10 12:08 PM
Conceptos relacionados
Modelado de mensajes
El modelo de mensaje
Tareas relacionadas
Desarrollo de modelos de mensaje
Cómo trabajar con un archivo de definición de mensajes
Cómo trabajar con objetos de modelo de mensaje
Referencia relacionada
Información de referencia de modelo de mensaje
Propiedades de objeto de modelo de mensaje
Función CAST
Formato y análisis de números como series de caracteres
Transformaciones CAST soportadas
Transformaciones CAST implícitas
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última actualización : 2009-02-16 13:55:35

ak05616_