Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Extraer Hora de Campo Date en firebird (https://www.clubdelphi.com/foros/showthread.php?t=76537)

rruffino 08-11-2011 12:23:08

Extraer Hora de Campo Date en firebird
 
Hola gente, estoy con firebird 2.1, el dialecto es 3. He estado realizando un procedimiento almacenado pero ahora me veo en la necesidad de extraer la hora de una fecha, pero no encuentro la forma de hacerlo. Necesito sacar la hora para comparar y trabajar con ella. Les agradezco si alguien sabe como y lo comparte.
Saludos!!!:)

ecfisa 08-11-2011 12:37:03

Hola rrufino.

Para extraer la hora podrías usar:
Código SQL [-]
SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP) AS HORA FROM RDB$DATABASE

O si fuera sobre un campo de una tabla, sería:
Código SQL [-]
SELECT EXTRACT(HOUR FROM CAMPO_FECHA) AS HORA FROM TU_TABLA

Un saludo.

rruffino 08-11-2011 12:58:01

Gracias por tu respuesta
 
Hola!! Gracias por tu respuesta. En realidad yo en mi procedimiento almacenado tengo un parametro input del tipo TIME. El tema es que cuando yo quiero usarlo para comparar la hora con una variable interna, tambien del tipo time, me tira error de conversion porque el parametro no tiene un valor en formato tiempo como por ejemplo 8:00:15 sino que tiene el formato fecha-hora, por ejemplo 10/11/2011 8:00:15. Por eso preguntaba si se puede extraer toda la hora (8:00:15) completa para que no tire ese error, o en su defecto como puedo hacer para comparar con la variable interna que esa si tiene el formato deseado (8:00:15). Espero haberme explicado mejor. Muchas muchas gracias!!:o

ecfisa 08-11-2011 13:11:18

Hola.

Entiendo, el parámetro es de tipo TIMESTAMP. Creo que podrías hacer un CAST sobre el valor del parámetro, como no conozco el código te pongo un ejemplo general del uso:
Código SQL [-]
  SELECT CAST(CURRENT_TIMESTAMP AS TIME) AS HORA FROM RDB$DATABASE

Un saludo.

ecfisa 08-11-2011 13:37:02

Hola rrufino.

Te pongo un ejemplo más concreto en que se compara un valor tipo TIMESTAMP y un tipo TIME:
Código SQL [-]
CREATE PROCEDURE ES_IGUAL(HORA1 TIMESTAMP, HORA2 TIME)
RETURNS(RESULT SMALLINT)
AS
DECLARE VARIABLE AUX TIME;
BEGIN
  AUX = CAST(HORA1 AS TIME);
  IF (AUX = HORA2) THEN  /* directamente: IF (CAST(HORA1 AS TIME) = HORA2) THEN */
    RESULT = 1;
  ELSE
    RESULT = 0;
END;
La variable AUX es innecesaria en este caso, pero está como para ejemplificar el uso con una variable interna.

Saludos.


La franja horaria es GMT +2. Ahora son las 05:45:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi