Compatibilidad con campos de fecha, hora y de marca de hora en SQL Translator

En esta sección:

Referencia:

Se han definido varios tipos de datos nuevos para que SQL Translator admita campos de fecha y hora en el predicado WHERE o en la lista de campos de una declaración SELECT.

Además, se pueden definir las columnas de hora o de marca de hora en orígenes de datos relacionales o de FOCUS que resultan accesibles para el traductor. Los valores se pueden suministrar con declaraciones INSERT y UPDATE y se pueden mostrar en declaraciones SELECT.

Los elementos de datos de hora o de marca de hora (columnas o literales) se pueden comparar en condiciones. Los valores de tiempo y marca de hora pueden añadirse y sustraerse unos de otros, produciendo como resultado la diferencia en número de segundos. Se permiten expresiones del tipo T + 2 HOURS o TS + 5 YEARS. Estas expresiones se traducen en llamadas a las funciones de fecha y hora descritas en el manual Cómo usar las funciones .

Todos los formatos de fecha para campos virtuales o reales en el archivo máster se convierten al formato YYYYMMDD. Si especifica un formato que no cuenta con uno de estos componentes, SQL Translator proporcionar un valor predeterminado para el componente no disponible. Para especificar una parte de una fecha, como el mes, utilice un campo virtual con un formato alfanumérico.


Principio de página

x
Referencia: Soporte de campos de fecha, hora y de campos de marca de hora en SQL Translator

En el gráfico siguiente, fff representa el segundo de tres lugares decimales (milisegundos) y ffffff representa el segundo de seis lugares decimales (microsegundos).

Se admiten los siguientes formatos como entrada al traductor:

Formato

Atributo USAGE en el archivo máster

Componentes de fecha

Fecha

YYMD
YYYY-MM-DD

Hora

HH
HH

Horas por minutos

HHI
HH.MM

Horas por segundos

HHIS
HH.MM.SS

Horas por milisegundos

HHISs
HH.MM.SS.fff

Horas por microsegundos

HHISsm
HH.MM.SS.ffffff

Años por horas

HYYMDH
YYYY-MM-DD HH

Años por minutos

HYYMDI
YYYY-MM-DD HH.MM

Años por segundos

HYYMDS
YYYY-MM-DD HH.MM.SS

Años por milisegundos

HYYMDs
YYYY-MM-DD HH.MM.SS.fff

Años por microsegundos

HYYMDm
YYYY-MM-DD
HH.MM.SS.ffffff

Nota:



x
Cómo extraer componentes de fecha y hora con SQL Translator

Cómo:

SQL Translator admite varias funciones que devuelven componentes de valores de fecha y hora. Utilice la declaración EXTRACT para extraer componentes.

Utilice la función TRIM para eliminar patrones de valores de fecha, hora y de marca de hora adelantados o rezagados. Consulte el manual Cómo usar las funciones .



x
Sintaxis: Cómo Utilizar funciones de fecha, hora y de marca de hora aceptadas por SQL Translator

Las siguientes funciones devuelven componentes de fecha y hora como valores de números enteros. Supongamos que x es un valor de fecha y hora:

Función

Valor de devolución

YEAR(x)

año

MONTH(x)

mes (número)

DAY(x)

día (número)

HOUR(x)

hora

MINUTE(x)

minuto

SECOND(x)

segundo

MILLISECOND(x)

milisegundo

MICROSECOND(x)

microsegundo



Ejemplo: Cómo utilizar funciones de fecha, hora y de marca de hora de SQL Translator

Con la columna de marca de hora TS cuyo valor es '1999-11-23 07:32:16.123456':

YEAR(TS) = 1999
MONTH(TS) = 11
DAY(TS) = 23
HOUR(TS) = 7
MINUTE(TS) = 32
SECOND(TS) = 16
MILLISECOND(TS) = 123
MICROSECOND(TS) = 123456


Ejemplo: Cómo utilizar funciones de fecha, hora y de marca de hora de SQL Translator en una declaración SELECT

Supongamos que un origen de datos de FOCUS llamado VIDEOTR2 incluye un campo de fecha y hora llamado TRANSDATE.

SQL
SELECT TRANSDATE,
YEAR(TRANSDATE), MONTH(TRANSDATE),
MINUTE(TRANSDATE)
FROM VIDEOTR2;
FILE VIDSQL 
END

SQL Translator produce los siguientes campos virtuales para funciones seguidos de una solicitud TABLE para mostrar la salida:

SET COUNTWIDTH=ON                                                        
-SET SQLERRNUM = 0;                                                      
DEFINE FILE                                                              
VIDEOTR2 TEMP                                                            
SQLDEF01/I4 MISSING ON NEEDS ALL = HPART(TRANSDATE,'YEAR','I4');         
SQLDEF02/I2 MISSING ON NEEDS ALL = HPART(TRANSDATE,'MONTH','I2');        
SQLDEF03/I2 MISSING ON NEEDS ALL = HPART(TRANSDATE,'MINUTE','I2');       
END                                                                      
TABLEF FILE VIDEOTR2                                                     
PRINT TRANSDATE SQLDEF01 AS 'SQLDEF01' SQLDEF02 AS 'SQLDEF02' SQLDEF03 AS
  'SQLDEF03'                                                             
ON TABLE SET CARTESIAN ON                                                
ON TABLE SET ASNAMES ON                                                  
ON TABLE SET HOLDLIST PRINTONLY 
END                                         

La salida es:

TRANSDATE         SQLDEF02  SQLDEF04  SQLDEF05
1999/06/20 04:14      1999         6        14
1991/06/27 02:45      1991         6        45
1996/06/21 01:16      1996         6        16
1991/06/21 07:11      1991         6        11
1991/06/20 05:15      1991         6        15
1999/06/26 12:34      1999         6        34
1919/06/26 05:45      1919         6        45
1991/06/21 01:10      1991         6        10
1991/06/19 07:18      1991         6        18
1991/06/19 04:11      1991         6        11
1998/10/03 02:41      1998        10        41
1991/06/25 01:19      1991         6        19
1986/02/05 03:30      1986         2        30
1991/06/24 04:43      1991         6        43
1991/06/24 02:08      1991         6         8
1999/10/06 02:51      1999        10        51
1991/06/25 01:17      1991         6        17


x
Sintaxis: Cómo Utilizar la función EXTRACT de SQL Translator para extraer componentes de fecha y hora

Utilice la siguiente función ANSI estándar para extraer componentes de fecha y hora como valores de número enteros:

EXTRACT(component FROM value)

donde:

component

Es uno de los siguientes: YEAR, MONTH, QUARTER, DAY, WEEKDAY, HOUR, MINUTE, SECOND, MILLISECOND o MICROSECOND.

value

Es una expresión o constante de campo de fecha y hora o DATE, TIME o TIMESTAMP

Los siguientes, por ejemplo, son equivalentes:

EXTRACT(YEAR FROM TS)
YEAR(TS)


Ejemplo: Cómo utilizar la función EXTRACT
SELECT D. EXTRACT(YEAR FROM D), EXTRACT(MONTH FROM D),
EXTRACT(DAY FROM D) FROM T

Esta solicitud produce filas parecidas a las siguientes:

1999-01-01     1999      1       1
2000-03-03     2000      3       3

WebFOCUS