Operaciones entre Fechas
Buenos Días Consultores
Si me pueden colaborar con la siguiente funciones, necesito recuperar información entre campos de fechas
1. El tiempo transcurrido entre el campo de fecha de contabilización (T0.[DocDate]) y el campo de fecha de pago (T0.[U_FPresen]) utilize la siguiente función
DATEDIFF(day,T0.[DocDate],T0.[U_FPresen] ) AS ‘Duration’ , pero si no tengo ningún valor en el campo de fecha de pago debe recuperarme la cantidad de días hasta la fecha de hoy.
2. El tiempo transcurrido entre el campo de fecha de contabilización (T0.[DocDate]) y el campo de fecha de entrega (T0.[U_FEnt]) utilize la siguiente función
SELECT T0.[DocDate], T0.[U_FEnt],
CASE
WHEN (DATEDIFF (day, T0.[DocDate],ISNULL(T0.[U_FEnt])))
ELSE
THEN ‘No Entregada’
END ‘Fecha’
pero si no tengo ningún valor en el campo de fecha de entrega debe decir ” No Entregada”.
Agradezco mucho por su cooperación.
Saludos
Carlos Ortega
Estimado, prueba con la siguiente:
SELECT T0.[DocDate], T0.[U_FPresen],
CASE
WHEN T0.[U_FPresen] IS NULL THEN DATEDIFF(day,T0.[DocDate],GETDATE())
ELSE DATEDIFF(day,T0.[DocDate],T0.[U_FPresen])
END 'Dias'
FROM ORCT T0
Slds.
Para el segundo punto prueba lo siguiente:
SELECT T0.[DocDate], T0.[U_FEnt],
CASE
WHEN T0.[U_FEnt] IS NULL THEN 'No Entregada'
ELSE DATEDIFF(day,T0.[DocDate],T0.[U_FEnt])
END 'Dias'
FROM ORCT T0
Slds.
Gracias Francisco por su colaboración este esta es la sentencia que arme de acuerdo al aporte :
SELECT T0.[DocDate], T0.[U_FEnt],
CASE
WHEN T0.[U_FEnt] IS NULL THEN 'No Entregada'
ELSE DATEDIFF(day,T0.[DocDate],T0.[U_FEnt])
END 'Dias'
FROM OINV T0 WHERE T0.[DocNum] ='216222'
Pero al momento de ejecutarla me envia el siguiente mensaje :
Conversion failed when converting the varchar value 'No Entregada' to data type int.
Saludos
Carlos Ortega
Intenta con lo siguiente:
SELECT T0.[DocDate], T0.[U_FEnt],
CASE
WHEN T0.[U_FEnt] IS NULL THEN 'No Entregada'
ELSE CONVERT(NVARCHAR(4),DATEDIFF(day,T0.[DocDate],T0.[U_FEnt]))
END 'Dias'
FROM OINV T0 WHERE T0.[DocNum] ='216222'
Gracias Francisco
Me Funciono, un 10 para usted.