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, se puede aplicar un patrón de formato que dirija la conversión. Esto se aplica si se da formato de una fecha o una hora a una serie o se analiza una serie como una fecha u hora.

Durante el formato (por ejemplo, de una fecha y hora a una serie de caracteres) se sustituye un patrón o un conjunto de símbolos por su origen equivalente. La Figura 1 ofrece una representación de cómo se aplica esto.

Figura 1. Utilizando un patrón para dar formato a un origen de fecha y hora para generar una salida de serie.

Cuando se analiza una serie (por ejemplo para convertirla en una fecha y hora), se utiliza el patrón o el conjunto de símbolos para determinar qué parte de la fecha y hora de destino queda representada por qué parte de la serie de caracteres. La Figura 2 proporciona una representación de cómo se aplica esto.

Figura 2. Utilización de un patrón para analizar un origen de serie de caracteres con el que generar una salida de fecha y hora.

Sintaxis

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

   .--------------.
   | .- -.        |
   V V   |        |
  >------+-símbolo-+->
         '-serie de caracteres-'

donde:
símbolo
es un carácter del juego de caracteres adDeEFGhHIkKmMsSTUwWyYzZ.
serie de caracteres
es una secuencia de caracteres encerrada entre comillas simples. Si se necesita comillas simples en la serie de caracteres, se puede encerrar entre comillas dobles, “''”.

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

La tabla siguiente lista los caracteres permitidos que se pueden utilizar en un patrón para dar formato o para analizar series de caracteres en relación con una fecha y hora.

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 a 7) Número 26
EEE día de la semana Texto Mar
EEEE día de la semana Texto Martes
F día de la semana del mes (1-5) Número 2 (para el segundo miércoles de Julio)3
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) Número 77
HH hora del día en formato de 24 horas (00-23) Número 077
I Fecha/hora ISO8601 (hasta yyyy-MM-dd'T'HH:mm:ss.SSSZZZ) texto 2004-10-07T12:06:56.568+01:005
IU Fecha/hora ISO8601 (igual que la anterior, pero ZZZ con la salida "Z" si el huso horario es +00:00) texto 2004-10-07T12:06:56.568+01:00, 2003-12 -15T15:42:12.000Z 5
k hora del día en formato de 24 horas (1-24) Número 87
k hora del día en formato de 24 horas (01-24) Número 087
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 segundos Número 78
SS centésimas de segundo Número 708
SSS milisegundos Número 7008
SSSS 1/10.000 de segundos Número 70008
SSSSS 1/100.000 de segundos Número 700008
SSSSSS 1/1.000.000 de segundos Número 7000008
T Hora ISO8601 (hasta HH:mm:ss.SSSZZZ) texto 12:06:56.568+01:005
TU Hora ISO8601 (igual que la anterior pero el huso horario de +00:00 se sustituye por 'Z') texto 12:06:56.568+01:00, 15:42:12.000Z5
w semana del año Número 7, 532
ww semana del año Número 07, 532
W semana del mes Número 24
yy año Número 961
yyyy año Número 19961
YY año: utilizar sólo con semana del año Número 962
YYYY año: utilizar sólo con semana del año Número 19962
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 comillas simples) comillas simples en el texto de escape   'en''punto'

La presentación del objeto de fecha y hora depende de los símbolos que especifique del modo que se indica a continuación:

Notas: Los puntos siguientes explican las notas de la tabla anterior:
  1. El año se maneja como un caso especial:
    • En la salida, si la cuenta de y es 2, se trunca el año 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 igual a 52 resultará en el valor de año 2052, mientras que 53 dará el año de salida 1953 y 97 dará 1997.
  2. 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 llevar a fechas especificadas relativas a un año que de hecho están en un año distinto. Por ejemplo, "Lunes semana 1 2005" analizado utilizando "EEEE' week 'w' 'YYYY" daría la fecha 27-12-2004, puesto que el lunes de la primera semana de 2005 es realmente una fecha del año 2004.

    Si utiliza el símbolo y, el ajuste no se realiza y pueden producirse resultados imprevisibles para fechas cercanas al fin de 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
  3. El 11 de julio de 2001 es el segundo miércoles de julio y se puede expresar como 2001 julio miércoles 2 utilizando la serie de formato yyyy MMMM EEEE F. Esto no es lo mismo que el miércoles de la semana 2 de julio de 2001, que es el 4 de julio de 2001.
  4. Es posible que la primera y la última semana de un mes incluyan días de meses contiguos. Por ejemplo, Martes 31 de julio de 2001 se puede expresar como Martes de la semana uno de agosto de 2001, que es 2001 08 1 Martes utilizando la serie de formato yyyy MM W EEEE.
  5. Consulte la sección sobre Símbolos de fecha y hora ISO8601, I y T.
  6. Los valores especificados en el campo de día de semana están fijados en:
    • 1 - Domingo
    • 2 - Lunes
    • 3 - Martes
    • 4 - Miércoles
    • 5 - Jueves
    • 6 - Viernes
    • 7 - Sábado
  7. Los campos de 24 horas pueden dar como resultado una hora ambigua si se especifica un campo am/pm conflictivo.
  8. La longitud de las fracciones de segundos debe coincidir implícitamente con le número de símbolos de formato de la entrada. La salida se redondea hasta la longitud especificada.
  9. Los husos horarios largos funcionan mejor cuando se utilizan en el formato Continente/Ciudad. Del mismo modo, en sistemas Unix, la variable de entorno TZ se debe especificar utilizando el formato Continente/Ciudad.

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

Si los valores de fecha y hora son compatibles con el estándar ISO8601:2000 para la representación de fechas y horas, debe considerar si es posible utilizar los símbolos de formato I y T. Estos coinciden específicamente con un subconjunto de ISO8601.

Estos símbolos sólo se pueden utilizar por su cuenta.

En la salida, se aplicará el formato siguiente dependiendo del tipo y hora lógico:

Tipo de datos MRM lógico Tipo de datos ESQL lógico Formato de salida
xsd:dateTime TIMESTAMP o GMTTIMESTAMP yyyy-MM-dd'T'HH:mm:ss.SSSZZZ
xsd:date DATE aaaa-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 requiere que en la salida se genere siempre 'Z', debe utilizar los símbolos de formato IU o TU alternativos.
  • ZZZ siempre generará '+00:00' en la salida para indicar una diferencia horaria de cero con respecto a la hora UTC (Coordinated Universal Time). Si requiere que en la salida se genere siempre 'Z', debe utilizar el formato ZZZU alternativo.

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 una serie de caracteres puede especificar la hora UTC (Coordinated Universal Time) utilizando el carácter 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 deben aparecer Z o +00:00 utilizando la propiedad de formato de fecha y hora del elemento o atributo. Alternativamente 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, entonces se conservará el formato UTC en el mensaje de salida y se alterará temporalmente el implícito en la propiedad de formato de fecha y hora.

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" 1996.07.10 a las 15:08:56 -05:00
EEE, MMM d, "yy" Mié, Julio 10, '96
"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, 2006 Última actualización: 22/08/2006
ak05616_