TSTOPACK: Cómo convertir una columna de marca de tiempo de MSSQL o Sybase a decimal empaquetado

Cómo:

Esta función sólo corresponde a los adaptadores de Microsoft SQL Ser ver y Sybase.

Microsoft SQL Server y Sybase incluyen un tipo de datos llamado TIMESTAMP. En lugar de incluir una marca de tiempo real, las columnas con este tipo de datos contienen un número que aumenta con cada registro insertado o actualizado en el origen de datos. Esta marca de tiempo procede de un área común, por lo tanto, no puede haber dos tablas en la base de datos que tengan el mismo valor de columna de marca de tiempo. El valor se almacena con el formato Binary(8) o Varbinary(8), en la tabla, aunque se devuelve como columna alfanumérica de doble ancho (A16). Puede usar la función TSTOPACK para convertir el valor de marca de tiempo a decimal empaquetado.


Principio de página

x
Sintaxis: Cómo Convertir una columna de marca de tiempo de MSSQL o Sybase a decimal empaquetado
TSTOPACK(tscol, output);

donde:

tscol

A16

Es la columna de marca de tiempo que se va a convertir.

output

P21

Es el nombre del campo que contiene el resultado, o el formato del valor de salida puesto entre comillas solas (‘).



Ejemplo: Cómo convertir una columna de marca de tiempo de MSSQL a decimal empaquetado

El siguiente comando CREATE TABLE crea un TSTEST de nombre de tabla de SQL Server, que contiene una columna de contador de números enteros, llamada I, y una de marca de tiempo, TS:

SQL SQLMSS
  CREATE TABLE TSTEST (I INT, TS timestamp) ;
END

El archivo máster del origen de datos TSTEST es el siguiente. El campo TS representa la columna TIMESTAMP:

FILENAME=TSTEST, SUFFIX=SQLMSS  , $
  SEGMENT=TSTEST, SEGTYPE=S0, $
    FIELDNAME=I, ALIAS=I, USAGE=I11, ACTUAL=I4,
      MISSING=ON, $
    FIELDNAME=TS, ALIAS=TS, USAGE=A16, ACTUAL=A16, FIELDTYPE=R, $

Nota: Cuando se genera una tabla para un sinónimo con una columna TIMESTAMP, la columna TIMESTAMP sólo podrá ser leída (FIELDTYPE=R).

TSTOPACK convierte la columna de marca de tiempo TS a decimal empaquetado:

DEFINE FILE TSTEST 
TSNUM/P21=TSTOPACK(TS,'P21');
END
TABLE FILE TEST64
PRINT I TS TSNUM
END

La salida es:


WebFOCUS