Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Dias entre fechas para un ano de 360 dias

1,693 views
Skip to first unread message

andresrios72

unread,
Jun 1, 2011, 11:18:06 AM6/1/11
to
nelva escribió el 23/08/2005 21:01 :
> Estimado Maxi, efectivamente ya hice lo que indicaste pero no lo logro, te
> pongo un caso:
>
> datediff(day,01/05/02,31/08/05)= 1218 dias
> pero para anos de 360 dias, esto me deberia de dar 1200 dias.
>
> Tengo 18 dias de mas y para el calculo de vacaciones me genera un factor
> mayor.
> porque yo % 1218/360*12*2.5 1.50
> 1200/360*12*2.5 0.00
>
> osea que le estaria pagando 1.50 dias mas al empleado, lo cual es
> incorrecto.
>
> es ahi mi requerimiento.
>
> "Maxi" escribió en el
> mensaje
> news:
>> Hola, la diferencia de dias no es el problema, si obtienes la diferencia
>>
>>
> de
>> dias entre 2 fechas solo contara dias el sistema, luego podrias dividir
>>
>>
> por
>> 360 y saber cuantos años es
>>
>>
>> Salu2
>> Maxi
>>
>>
>> "nelva" escribió en el mensaje
>> news:
>> > Esto yo lo puedo hacer desde Excel usando la funcion DIAS360
>> >
>> > Calcula el número de días entre dos fechas basándose
>> en un año de 360
>>
>>
> días
>> > (doce meses de 30 días) que se utiliza en algunos cálculos
>> contables.
>>
>>
> Use
>> > esta función para facilitar el cálculo de pagos si su
>> sistema de
>> > contabilidad se basa en 12 meses de 30 días.
>> >
>> > Ahora estoy usando SQL server y quiero obtener los dias trabajados entre
>> > dos
>> > fechas , basandose en un ano de 360 días. Que podria usar en este
>> caso.
>> > Por
>> > que con DATEDIFF me da anos Calendario y para asuntos contables se usa
>>
>>
> 360
>> > dias
>> >
>> >
>> >
>> > Cualquier ayuda sera excelente..
>> >
>> >
>> >
>> >
>> >
>> >
>>
>
-- =============================================
-- Author: <Carlos Andres Rios Gallego>
-- Create date: <01/06/2011>
-- Description: <Diferencia entre fechas(360) con meses de 30 dias>
-- =============================================
CREATE FUNCTION DATEDIFF360(@FECHA_INICIAL DATETIME, @FECHA_FINAL DATETIME)
RETURNS int
AS
BEGIN
DECLARE @DIA_INICIAL AS INT SET @DIA_INICIAL = DAY(@FECHA_INICIAL)
DECLARE @MES_INICIAL AS INT SET @MES_INICIAL = MONTH(@FECHA_INICIAL)
DECLARE @ANO_INICIAL AS INT SET @ANO_INICIAL = YEAR(@FECHA_INICIAL)
DECLARE @DIA_FINAL AS INT SET @DIA_FINAL = DAY(@FECHA_FINAL)
DECLARE @MES_FINAL AS INT SET @MES_FINAL = MONTH(@FECHA_FINAL)
DECLARE @ANO_FINAL AS INT SET @ANO_FINAL = YEAR(@FECHA_FINAL)
DECLARE @DIAS AS INT

IF(@DIA_FINAL < @DIA_INICIAL)
BEGIN
SET @DIA_FINAL = @DIA_FINAL + 30
SET @MES_FINAL = @MES_FINAL - 1
END

IF(@MES_FINAL < @MES_INICIAL)
BEGIN
SET @MES_FINAL = @MES_FINAL + 12
SET @ANO_FINAL = @ANO_FINAL - 1
END

SET @DIAS =
(
(@DIA_FINAL + 1) - (@DIA_INICIAL)
) +
(
((@MES_FINAL) - (@MES_INICIAL)) * 30
) +
(
(@ANO_FINAL - @ANO_INICIAL) * 360
)

RETURN @DIAS

END
GO

diego.marti...@gmail.com

unread,
Jun 28, 2017, 12:09:54 PM6/28/17
to
Tal vez esta función que alguna vez hice les funcione

CREATE FUNCTION [dbo].[f_getDias360]
(
@pFechaInicial DATE
,@pFechaFinal DATE
)
RETURNS INT
AS
BEGIN--INICIO
----------------------------------------------------------------------
--DECLARACION DE VARIABLES
----------------------------------------------------------------------
DECLARE
@fechaInicial DATE=@pFechaInicial
,@fechaFinal DATE=@pFechaFinal

DECLARE
@diaInicio INT=DAY(@fechaInicial)
,@diaFin INT=DAY(@fechaFinal)
,@diasMes INT=30
,@cantidadDias360 INT
,@diferenciaMeses INT
,@diferenciaDiasInicial INT
,@diferenciaDiasFinal INT
----------------------------------------------------------------------

----------------------------------------------------------------------
--FUNCION
----------------------------------------------------------------------
SELECT
@diaInicio=CASE WHEN @diaInicio>@diasMes THEN @diasMes ELSE @diaInicio END
,@diaFin=CASE WHEN @diaFin>@diasMes THEN @diasMes ELSE @diaFin END

SELECT
@diferenciaMeses=DATEDIFF(MONTH,@fechaInicial,@fechaFinal)+1--SE SUMA 1 PARA INCLUIR EL MES DE LA FECHA INICIAL

SELECT
@diferenciaDiasInicial=@diaInicio-1
,@diferenciaDiasFinal=30-@diaFin

SELECT
@cantidadDias360=
(@diferenciaMeses*@diasMes)
-@diferenciaDiasInicial
-@diferenciaDiasFinal
----------------------------------------------------------------------

RETURN @cantidadDias360
END--FIN
0 new messages