Donde Crear Funciones ??

24/11/2004 - 19:04 por JOGC | Informe spam
Hola,

Me enviaron la sgte función :

CREATE FUNCTION fn_DaysOfMonth( @FECHA DATETIME )
RETURNS INT AS
BEGIN
SET @FECHA = DATEADD(MM, 1, @FECHA)
SET @FECHA = SUBSTRING(CONVERT(CHAR(10), @FECHA, 112),
1,6)+'01'
RETURN(SELECT CONVERT(INT,DATEPART(DD,DATEADD(dd, -1,
@FECHA))))
END

Necesito probarla ¿ Donde la instalo o creo, para poder
ejecutarla del Analizador de Consulta ?

Gracias

Preguntas similare

Leer las respuestas

#1 Javier Loria
24/11/2004 - 19:21 | Informe spam
Hola:
Podrias hacer lo siguiente:
a) Abre el Analizador de Consultas
b) Selecciona Pubs o Northwind del combo de Base de Datos.
c) Ejecuta el codigo que posteaste
d) Abre una ventana nueva de Analizador de Consultas
e) Ejecutas: SELECT dbo.fn_DaysOfMonth(GETDATE())
Adicionalmente creo que podrias reescribir la funcion a algo mas
sencillo:
=CREATE FUNCTION fn_DaysOfMonth( @FECHA DATETIME )
RETURNS INT AS
BEGIN
RETURN DATEDIFF(day, @Fecha,DATEADD(month,1, @Fecha))
END
= Esto debe ser mas facil de entender y mas rapido.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"JOGC" wrote in message
news:1a8f01c4d250$16e80ea0$
Hola,

Me enviaron la sgte función :

CREATE FUNCTION fn_DaysOfMonth( @FECHA DATETIME )
RETURNS INT AS
BEGIN
SET @FECHA = DATEADD(MM, 1, @FECHA)
SET @FECHA = SUBSTRING(CONVERT(CHAR(10), @FECHA, 112),
1,6)+'01'
RETURN(SELECT CONVERT(INT,DATEPART(DD,DATEADD(dd, -1,
@FECHA))))
END

Necesito probarla ¿ Donde la instalo o creo, para poder
ejecutarla del Analizador de Consulta ?

Gracias
Respuesta Responder a este mensaje
#2 Anonimo
24/11/2004 - 19:37 | Informe spam
Javier,

Al colocarla sobre esa base datos y revisar la
gramatica me da el sgte. error.

Servidor: mensaje 170, nivel 15, estado 1, línea 1
Línea 1: sintaxis incorrecta cerca de 'FUNCION'.
Servidor: mensaje 137, nivel 15, estado 1, línea 4
Debe declarar la variable '@Fecha'.


Hola:
Podrias hacer lo siguiente:
a) Abre el Analizador de Consultas
b) Selecciona Pubs o Northwind del combo de Base de


Datos.
c) Ejecuta el codigo que posteaste
d) Abre una ventana nueva de Analizador de Consultas
e) Ejecutas: SELECT dbo.fn_DaysOfMonth(GETDATE())
Adicionalmente creo que podrias reescribir la


funcion a algo mas
sencillo:
=>CREATE FUNCTION fn_DaysOfMonth( @FECHA DATETIME )
RETURNS INT AS
BEGIN
RETURN DATEDIFF(day, @Fecha,DATEADD(month,1, @Fecha))
END
=> Esto debe ser mas facil de entender y mas rapido.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"JOGC" wrote in message
news:1a8f01c4d250$16e80ea0$
Hola,

Me enviaron la sgte función :

CREATE FUNCTION fn_DaysOfMonth( @FECHA DATETIME )
RETURNS INT AS
BEGIN
SET @FECHA = DATEADD(MM, 1, @FECHA)
SET @FECHA = SUBSTRING(CONVERT(CHAR(10), @FECHA, 112),
1,6)+'01'
RETURN(SELECT CONVERT(INT,DATEPART(DD,DATEADD(dd, -1,
@FECHA))))
END

Necesito probarla ¿ Donde la instalo o creo, para poder
ejecutarla del Analizador de Consulta ?

Gracias


.

Respuesta Responder a este mensaje
#3 Javier Loria
24/11/2004 - 19:56 | Informe spam
Hola:
Varias posiblidades:
a) Es FUNCTION no FUNCION. :D
b) Es un SQL 2000, no un 7.0 Las funciones solo vienen desde el
2000. :(
c) Si estas usando mi funcion podria ser que tu BD este sensitiva
minusculas/mayusculas y es posible que reconozca entre @FECHA y @Fecha. :(
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

wrote in message
news:9abe01c4d254$b36d5830$
Javier,

Al colocarla sobre esa base datos y revisar la
gramatica me da el sgte. error.

Servidor: mensaje 170, nivel 15, estado 1, línea 1
Línea 1: sintaxis incorrecta cerca de 'FUNCION'.
Servidor: mensaje 137, nivel 15, estado 1, línea 4
Debe declarar la variable '@Fecha'.


Hola:
Podrias hacer lo siguiente:
a) Abre el Analizador de Consultas
b) Selecciona Pubs o Northwind del combo de Base de


Datos.
c) Ejecuta el codigo que posteaste
d) Abre una ventana nueva de Analizador de Consultas
e) Ejecutas: SELECT dbo.fn_DaysOfMonth(GETDATE())
Adicionalmente creo que podrias reescribir la


funcion a algo mas
sencillo:
=>CREATE FUNCTION fn_DaysOfMonth( @FECHA DATETIME )
RETURNS INT AS
BEGIN
RETURN DATEDIFF(day, @Fecha,DATEADD(month,1, @Fecha))
END
=> Esto debe ser mas facil de entender y mas rapido.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"JOGC" wrote in message
news:1a8f01c4d250$16e80ea0$
Hola,

Me enviaron la sgte función :

CREATE FUNCTION fn_DaysOfMonth( @FECHA DATETIME )
RETURNS INT AS
BEGIN
SET @FECHA = DATEADD(MM, 1, @FECHA)
SET @FECHA = SUBSTRING(CONVERT(CHAR(10), @FECHA, 112),
1,6)+'01'
RETURN(SELECT CONVERT(INT,DATEPART(DD,DATEADD(dd, -1,
@FECHA))))
END

Necesito probarla ¿ Donde la instalo o creo, para poder
ejecutarla del Analizador de Consulta ?

Gracias


.

Respuesta Responder a este mensaje
#4 JOGC
24/11/2004 - 20:08 | Informe spam
Javier,

Efectivamente la alternativa era la b) mi sql es 7.0.

Gracias.
Hola:
Varias posiblidades:
a) Es FUNCTION no FUNCION. :D
b) Es un SQL 2000, no un 7.0 Las funciones solo


vienen desde el
2000. :(
c) Si estas usando mi funcion podria ser que tu


BD este sensitiva
minusculas/mayusculas y es posible que reconozca entre


@FECHA y @Fecha. :(
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

wrote in message
news:9abe01c4d254$b36d5830$
Javier,

Al colocarla sobre esa base datos y revisar la
gramatica me da el sgte. error.

Servidor: mensaje 170, nivel 15, estado 1, línea 1
Línea 1: sintaxis incorrecta cerca de 'FUNCION'.
Servidor: mensaje 137, nivel 15, estado 1, línea 4
Debe declarar la variable '@Fecha'.


Hola:
Podrias hacer lo siguiente:
a) Abre el Analizador de Consultas
b) Selecciona Pubs o Northwind del combo de Base de


Datos.
c) Ejecuta el codigo que posteaste
d) Abre una ventana nueva de Analizador de Consultas
e) Ejecutas: SELECT dbo.fn_DaysOfMonth(GETDATE())
Adicionalmente creo que podrias reescribir la


funcion a algo mas
sencillo:
=>>CREATE FUNCTION fn_DaysOfMonth( @FECHA DATETIME )
RETURNS INT AS
BEGIN
RETURN DATEDIFF(day, @Fecha,DATEADD(month,1,




@Fecha))
END
=>> Esto debe ser mas facil de entender y mas rapido.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"JOGC" wrote in message
news:1a8f01c4d250$16e80ea0$
Hola,

Me enviaron la sgte función :

CREATE FUNCTION fn_DaysOfMonth( @FECHA DATETIME )
RETURNS INT AS
BEGIN
SET @FECHA = DATEADD(MM, 1, @FECHA)
SET @FECHA = SUBSTRING(CONVERT(CHAR(10), @FECHA, 112),
1,6)+'01'
RETURN(SELECT CONVERT(INT,DATEPART(DD,DATEADD(dd, -1,
@FECHA))))
END

Necesito probarla ¿ Donde la instalo o creo, para




poder
ejecutarla del Analizador de Consulta ?

Gracias


.





.

Respuesta Responder a este mensaje
#5 Isaias
24/11/2004 - 23:55 | Informe spam
Entonces PIDO DISCULPAS, por no preguntar antes sobre que version de SQL
Server querian el numero de dias por mes y mandar esa funcion que por
versiones, no corre en SQL 7.0.

Lo siento.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida