Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/05/2010, 15:16
Avatar de Porlachucha
Porlachucha
 
Fecha de Ingreso: noviembre-2008
Ubicación: Santiago
Mensajes: 172
Antigüedad: 15 años, 6 meses
Puntos: 5
Problemas con formatos de fechas

Hola Foro. Necesito por favor si me pueden ayudar con este problema.

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:
USE [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
dicha funcion, ejecuta bien por si sola, usando parametros de fecha especificados de la siguiente manera

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:
create table 
##Fechas (NumeroSemana	int, 
                 FechaInicioSem	datetime, 
	FechaTerminoSem	datetime)
despues ejecuto algun proceso para llenar los datos de la tabla

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.
__________________
Nada mas patetico que "detestar" a Intel o Microsoft o Windows o Apple ... apuesto que eres el tipico teton espinilluo y pajero que usa Linux para sentirse capo ...