GEN_ID()

1 comentario

Descripción: Incrementa un generador (también llamado secuencia) y devuelve el nuevo valor.

Tipo de resultado: Bigint

Sintaxis:

GEN_ID(nombre del generador, <incremento>)

<incremento> = una expresión entera que puede ser positiva, negativa o cero

Ejemplo:

   NEW.PER_IDENTI = GEN_ID(Generador_Personas, 1)

En este ejemplo el valor de la variable Generador_Personas aumentará en 1 y ese nuevo valor será asignado a la variable NEW.PER_IDENTI

Sería (casi) equivalente a escribir:


Generador_Personas = Generador_Personas + 1

NEW.PER_IDENTI = Generador_Personas

Sin embargo, es preferible y recomendable utilizar la función GEN_ID() para incrementar el valor de Generador_Personas ¿por qué eso? porque la variable Generador_Personas es global a toda la Base de Datos y  en una aplicación multiusuario donde hay cientos o miles de usuarios utilizándola  no se puede garantizar que el valor de Generador_Personas que recibe la variable NEW.PER_IDENTI sea el mismo que se incrementó en el paso anterior. En cambio con la función GEN_ID() el Firebird te garantiza que siempre obtendrás el valor correcto.

 

 

 

.

Anuncios

FLOOR()

2 comentarios

Descripción: Devuelve el mayor número entero que sea igual o menor que su argumento

Tipo de resultado: Bigint o Doble precisión

Sintaxis:

FLOOR(número)

Ejemplos:

SELECT
   FLOOR(27.00001)     -- devolverá 27
FROM
   RDB$DATABASE

SELECT
   FLOOR(27.00000)     -- devolverá 27
FROM
   RDB$DATABASE

La función FLOOR() es idéntica a la función INT() que tienen algunos lenguajes de programación.

.

EXTRACT()

1 comentario

Descripción: Extrae y devuelve un elemento de una expresión que sea de tipo DATE, TIME o TIMESTAMP.

Tipo de resultado: Smallint o Numeric

Sintaxis:

EXTRACT(<parte> OF <fechahora>)

<parte> = YEAR | MONTH | WEEK | DAY | WEEKDAY | YEARDAY | HOUR | MINUTE | SECOND | MILLISECOND

<fechahora> = Una expresión que sea de tipo DATE, TIME o TIMESTAMP

Los tipos de datos retornados y posibles rangos son mostrados en la tabla de abajo. Si tratas de extraer una parte que no está presente en el argumento (por ejemplo SECOND de un DATE o YEAR de un TIME) un error ocurre.

|-----------------------------------------------------------------------------------|
| Parte          Tipo          Rango            Comentario                          |
|-----------------------------------------------------------------------------------|
| YEAR           Smallint      1-9999                                               |
| MONTH          Smallint      1-12                                                 |
| WEEK           Smallint      1-53                                                 |
| DAY            Smallint      1-31                                                 |
| WEEKDAY        Smallint      0-6               0 = Domingo                        |
| YEARDAY        Smallint      0-365             0 = 1 de enero                     |
| HOUR           Smallint      0-23                                                 |
| MINUTE         Smallint      0-59                                                 |
| SECOND         Numeric(9, 4) 0.0000-59.9999    incluye milisegundos como fracción |
| MILLISECOND    Numeric(9, 1) 0.00-999.9                                           |
|-----------------------------------------------------------------------------------|

Ejemplo:

SELECT
   EXTRACT(DAY   FROM MVC_FECHAX) AS DIA_DE_LA_VENTA,
   EXTRACT(MONTH FROM MVC_FECHAX) AS MES_DE_LA_VENTA
FROM
   MOVIMCAB
WHERE
   MVC_TIPMOV = 'SVT'

.

EXP()

1 comentario

Descripción: Devuelve el exponencial de e elevado al argumento recibido por esta función

Tipo de resultado: Doble precisión

Sintaxis:

EXP(número)

 

 

.