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.
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.
El patrón de la expresión se define mediante:
.-------------. V | >>---+-símbolo-+-+--------------------------------------------->< '-serie---'
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 |
kk | 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)9 | Texto | ¿¿ EST |
zzzz | huso horario (nombre completo) | Texto | ?? Hora estándar del este |
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óstrofo 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.
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":
Para evitar estos problemas, utilice la opción zzzz con un nombre bien definido; por ejemplo, Europa/Londres, Asia/Dhaka o América/Los_Angeles.
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 |
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.
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.
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);
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 |
En MRM, es posible definir un elemento que tenga el tipo lógico dateTime.
Cuando se analiza un elemento dateTime, se crea un campo en el árbol de mensaje que tiene el tipo de datos de ESQL CURRENT_TIME o CURRENT_TIMESTAMP. No obstante, los tipos de datos CURRENT_TIME y CURRENT_TIMESTAMP no tienen la funcionalidad de almacenar información de huso horario y el MRM no ajusta la hora según el huso horario de entrada y el huso horario del intermediario.
Aunque los tipos de datos CURRENT_TIME y CURRENT_TIMESTAMP no pueden almacenar información de huso horario, el MRM almacena esta información como parte del campo subyacente. Esto significa que, si el campo se copia entre árboles de mensajes, la información de huso horario se copia con él, lo que permite que esta información se conserve a la salida.
Tenga en cuenta que la información sólo se conserva si el campo se copia en un campo con el mismo nombre.
No obstante, si hay algún campo nuevo derivado del campo original, el campo nuevo no tendrá la información de huso horario. Esto significa que si dicho campo se convierte a caracteres, el nuevo campo adoptará el huso horario del intermediario, pero su valor no se ajustará para compensar ninguna diferencia entre el huso horario de entrada y el huso horario del intermediario.
Por ejemplo, un elemento dateTime de entrada que contenga 2009-02-20T06:08:07-08:00 se podría copiar del árbol de mensaje de entrada al árbol de mensaje de salida y aparecer en un mensaje de salida exactamente en el mismo formato. No obstante, si un intermediario que ejecute GMT convierte el elemento a caracteres utilizando el formato IU, el resultado será 2009-02-20T06:08:07.000Z.