![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() Hola, tengo una función en una Bd MySql y estoy intentando convertirla a procedimiento de Firebird. No puedo con ella. Podéis echarme un cable?. Gracias.
Código:
CREATE DEFINER=`root`@`localhost` FUNCTION `dias_sin`() RETURNS smallint(6) BEGIN DECLARE resultado SMALLINT DEFAULT 0; SELECT MAX(DATEDIFF(dt1.fecha, dt2.fecha)) INTO resultado FROM datos dt1 INNER JOIN datos dt2 ON dt1.salida_num = dt2.salida_num + 1; RETURN resultado; END |
#2
|
||||
|
||||
No somos adivinos, no sabemos qué son exactamente esos campos, se supone que devuelve la diferencia entre dos fechas, pero para eso no hace falta crear ningún procedimiento.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
|||
|
|||
Estoy de acuerdo con lo que dice Casimiro.
En todo caso, lo único que deberías tener en cuenta és la utilización diferente en fitebird de la función DATEDIFF DATEDIFF(<unidad> FROM <momento1> TO <momento2>) En tu caso sería
|
#4
|
|||
|
|||
![]() Cita:
La función lo que hace es comparar una fecha con su anterior y devuelve la mayor diferencia entre dos fechas: Código:
CREATE DEFINER=`root`@`localhost` FUNCTION `dias_sin`() RETURNS smallint(6) BEGIN DECLARE resultado SMALLINT DEFAULT 0; SELECT MAX(DATEDIFF(dt1.fecha, dt2.fecha)) INTO resultado FROM datos dt1 INNER JOIN datos dt2 ON dt1.salida_num = dt2.salida_num + 1; RETURN resultado; END |
#5
|
||||
|
||||
Hola.
Podrías probar algo similar a esto: De acuerdo a tu código infiero que la columna SALIDA_NUM es numérica ascendente y consecutiva, de otro modo no funcionará el algorítmo. Algo que no especificas es la unidad en que deseas obtener la diferencia. manelb ya te hizo esa observación y te especificó el formato de la sintáxis en su mensaje. Mas información sobre la función: DATEDIFF() Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#6
|
|||
|
|||
En primer lugar perdon por no haberme explicado correctamente y en segundo lugar muchas gracias por vuestro tiempo. La función devuelve un entero que es el número de días que hay de diferencia máxima entre dos fechas consecutivas. Repito muchas gracias y disculpad por mi error. Saludos.
|
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
funcion para convertir un numero en letras | dardusso23 | Varios | 5 | 28-10-2016 22:20:52 |
Convertir números a letras por medio de una función recursiva | nlsgarcia | Trucos | 17 | 22-07-2015 03:43:03 |
Funcion IN en Procedimiento Almacenado | mjjj | SQL | 8 | 03-10-2012 16:56:29 |
asigarnar tecla a un procedimiento o funcion | douglas | OOP | 4 | 21-10-2007 01:17:26 |
Creando funcion o procedimiento almacenado | buffygcs | MS SQL Server | 3 | 05-05-2005 09:44:56 |
![]() |
|