Colocar fecha a un Query

Hola @GiancarloB te soy bien sincero, no entiendo que es lo que necesitas o a donde quieres llegar con tu consulta.

Te comento lo siguiente, espero sea de ayuda

La fecha de contabilización en la base de datos se llama DocDate, la fecha del documento se llama TaxDate, no necesariamente los valores que tengas ahí son realmente la fecha en que se hizo le documento, se puede dar el caso y es muy común que se captura hoy con fecha de ayer, pero me atrevo a decir que todos los reportes se basan en estas fechas ademas de la fecha de vencimiento que se llama DocDueDate

Ahora bien, si tu lo que necesitas es saber realmente la fecha en que se hizo le documento sin importar las que te he mencionado, existen dos campos mas a nivel de base de datos, se llaman

CreateDate = Fecha de creación del documento
UpdateDate = Fecha de actualización del documento

Saludos.

Hola Pcarrasco, si lo que deseo es saber el dia (si fue un lunes,marte o miércoles)por decir si hoy tengo la factura # 234 con fecha 5/12/2018, se desea saber que dia era, obvio ahora sabemos que es miércoles, como te decía con el DateName o DatePart en sql se puede sacar hasta donde he leido pero no me funciona o estoy haciendo algo mal.

Gracias por tu ayuda

Es bien sencillo, si necesitas saber que día fue el 24/10/2018 voltea a tu calendario, te darás cuenta que fue miércoles, no ??,(:grin: es broma).

En SQL salvo que alguien diga lo contrario solo puedes jugar con el formato de fecha de manera numérica, por ejemplo

mm/dd/aaaa = 12/06/2018
aa.mm.dd = 18.12.06
dd/mm/aaaa = 06/12/2018
dd.mm.aa = 06.12.18

Saludos.

Con esta instruccion puedes saber el dia de una fecha determinada, solo faltaria que juegues con un CASE para que tu ya le pongas el nombre al dia:

select DATEPART(dw, '06/12/2018')

Saludos

Mejorado jejejeje

Select Datename(WEEKDAY,'06/12/2018')

Jajaja,:grin:, es bueno el buen humor,
Pues mira mi query en sql y si me muestra el día, lo que no he podido es colocar esta consulta que encontré en mi query SELECT DATENAME (WEEKDAY,DocDate) AS ‘Dia’ FROM OPCH,deje esta consulta al final de mi query haciéndoloimagen en sql pero me lo deja separado, lo que no se es como unirlo a mi query.

Gracias

Hola Juliancab, gracias por responder, ese es mi inconveniente, que no se como agregarlo, ¿si vez mi query?, seria de mucha ayuda tu colaboración.

Gracias

Podrias porfavor postear el script completo.

Claro que si,
SELECT
T0.[CardCode],
T0.[CardName],
T0.[City],
T0.[U_BPCO_City],
T0.[Phone1],
T0.[Phone2],
T0.[E_MaiL],
T0.[Address],
T1.[SlpName],

(SELECT TOP (1) DocNum FROM OINV WHERE CardCode = T0.CardCode ORDER BY DocDate DESC) 'DocNum',

(SELECT TOP (1) DocDate FROM OINV WHERE CardCode = T0.CardCode ORDER BY DocDate DESC) 'DocDate',
  

DATEDIFF(DAY, (SELECT TOP (1) DocDate FROM OINV WHERE CardCode = T0.CardCode ORDER BY DocDate DESC), GETDATE()) AS 'Dias'

FROM OCRD T0 INNER JOIN OSLP T1 ON T0.[SlpCode] = T1.[SlpCode]

    
          WHERE DATEDIFF(DAY, (SELECT TOP (1) DocDate FROM OINV WHERE CardCode = T0.CardCode ORDER BY DocDate DESC), GETDATE()) >2
		  		SELECT DATENAME (WEEKDAY,DocDate) AS 'Dia' FROM OINV	

El ultimo select se lo coloque yo, pero no me funciona, que fue lo que me comentabas

Gracias por el apoyo

Ok, lo que entiendo de tu query, es que estas sacando la antiguedad de tus facturas. Ahora bien, en base a que fecha quieres sacar el nombre del dia o que es lo que necesitas hacer en si?

ok, si correcto me muestra las facturas que llevan mas de x tiempo y se desea tomar a partir de la fecha de contabilización el dia de la semana (L,M, M etc) en que se realizo la factura.
En si lo que se desea es poder saber en que dia de la semana se les genera la factura a los clientes hay cliente por ejemplo que siempre se les factura todos los jueves, la idea es revisar en un excel al filtrar este informe y poder hacerle seguimiento al cliente y llamarlos el dia en que no compren nuestro producto del dia habitual.

Gracias

una duda mas, obtienes el top 1? Porque asi?

Pues en mi consulta que estaba haciendo para hacer el query encontre esa opcion, pero si se puede de otra forma mas facil, te lo agradeceria.

Gracias

Pues mas bien es saber que quieres ver, ya que ahí lo que estas haciendo es delimitar a 1 registro y no te van a salir todas las facturas que cumplan la condición.

Quiero pensar que esto es lo que necesitas:

SELECT
T0.[CardCode],
T0.[CardName],
T0.[City],
T0.[Phone1],
T0.[Phone2],
T0.[E_MaiL],
T0.[Address],
T1.[SlpName],
T2.[DocNum],
T2.[DocDate],
DATENAME (WEEKDAY,T2.[DocDate]) AS 'Dia de Facturación',
DATEDIFF(DAY, T2.DocDate, GETDATE()) AS 'Dias'
FROM OCRD T0 INNER JOIN OSLP T1 ON T0.[SlpCode] = T1.[SlpCode]
INNER JOIN OINV T2 ON T0.CardCode= T2.CardCode
WHERE DATEDIFF(DAY, T2.DocDate, GETDATE()) > 2

O estoy mal?

1 me gusta

Wooo, eso es lo que necesitaba, pero en el query anterior no se mostraba lo mismo?, ¿porque me dices que lo limitaba?

porque usabas un top (1)

hummm ok, oye Juliancab, puedo abusar de tu inmensa ayuda, es posible que al ejecutar el query, solicite la fecha de inicio y fecha final.

Gracias

Cambia el WHERE principal por algo asi:

WHERE T2.DocDate Between '20161001' and '20171201'

y solo va sacar las facturas en ese rango y te va arrojar la antigüedad en base a la fecha actual.

Juliancab, mil gracias por el apoyo, te lo agradezco inmensamente, me sacaste de una.

:+1:

1 me gusta