Segun la documentacion de sqlserver 2005, las variables de tipo fecha, se guardan en formato ansi AAAADDMM, y dependiendo de la representacion que uno quiera mostrar en los select, habra que especificar el como aparecen estas fechas con la instriuccion set format {formato}
Tengo una funcion escalar, que acepta parametros de varios tipos, incluyendo 2 parametros de tipo datetime (usados para especificar un rango de fecha)
aca la funcion
Código:
dicha funcion, ejecuta bien por si sola, usando parametros de fecha especificados de la siguiente maneraUSE [bdcmc_ci] GO /****** Object: UserDefinedFunction [dbo].[uf_ope_get_hhs_insp] Script Date: 05/17/2010 15:53:50 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER function [dbo].[uf_ope_get_hhs_insp] ( @oricod char(15), @NomIns char(20), @FechaInicio datetime, @FechaTermino datetime ) returns decimal(10,2) as begin declare @Total_HH_insp decimal(10,2) select @Total_HH_insp = sum(datediff(minute, ih.inghorsal, ih.inghorreg)) / 60.0 from ingcab ic inner join inghor ih on ic.ingnum = ih.ingnum where ic.oricod = @oricod and ic.doctipcod = 'TH' and ic.ingusu = @NomIns and ih.inghorfeh between @FechaInicio and @FechaTermino return @Total_HH_insp end
select dbo.uf_ope_get_hhs_insp('018', 'psanmartinr', '29-03-2010', '04-04-20' )
en donde claramente se ve dd-mm-aaaa
el problema se da, al ejecutar la funcion desde un procedimiento almacenado
dicho procedimiento, crea una tabla temporal en donde se obtienen las fechas de inicio y termino de semana de cierto intervalo de tiempo. posteriormente, utilizo esa misma estructura, para ejecutar la funcion de calculo comnetada anteriormente. el problema se da, en que en la tabla creada, el formato es AAAA-MM-DD, y al usar esos campos como parametros de la funcion, la funcion me devuelve NULL para ese rango de fecha
aca creo la tabla temporal
Código:
despues ejecuto algun proceso para llenar los datos de la tablacreate table ##Fechas (NumeroSemana int, FechaInicioSem datetime, FechaTerminoSem datetime)
luego ejecuto este select
Código:
select FechaInicioSem, FechaTerminoSem, dbo.uf_ope_get_hhs_insp(@OriCod, @NomInsp, FechaInicioSem, FechaTerminoSem) as HHRealesSemana
El formato en que se agregan los datos a la tabla temporal, es AAAA-MM-DD, y no hay caso que la funcion (que tiene declrados los parametros como datetime) los pueda procesar como corresponde.
alguna idea que me pueda ayudar a resolver este tema.
de antemano, muy agradecido.