Uso de fechas en consulta SQL / MS-SQL

HMG en Español

Moderator: Rathinagiri

Post Reply
jparada
Posts: 233
Joined: Fri Jan 23, 2009 5:18 pm

Uso de fechas en consulta SQL / MS-SQL

Post by jparada » Wed May 30, 2018 3:15 am

Hola,

Para filtrar por rango de fecha en una consulta estoy haciendo algo como:

oQry += "WHERE cIdDocumentoDe IN (4,5) "
oQry += 'AND cFecha BETWEEN "20180405" AND "20180405" '
oQry += "ORDER BY Factura"

Obtengo error en la consulta, pero es por el tema de la fecha, si omito esa línea funciona bien la consulta.

Alguna ayuda acerca de cómo puedo indicar la fecha correctamente?, como comentario tal cual está la consulta funciona en el SQL Management Studio.

Gracias.

Saludos,
Javier

User avatar
dragancesu
Posts: 543
Joined: Mon Jun 24, 2013 11:53 am
DBs Used: DBF, MySQL, Oracle
Location: Subotica, Serbia
Has thanked: 12 times
Been thanked: 97 times

Post by dragancesu » Wed May 30, 2018 12:23 pm


martingz
Posts: 220
Joined: Wed Nov 18, 2009 11:14 pm
Location: Mexico
Has thanked: 12 times
Been thanked: 7 times

Post by martingz » Wed May 30, 2018 4:49 pm

Jparada uso esta funcion que me regresa un string con la fecha lista para usar en los querys de mysql

function cdate2mysqldate
parameters mfdate
local mfecreturn:=" - - "
if valtype(mfdate) = 'D'
mfecreturn:=str(year(mfdate),4,0) + '-' + strzero(month(mfdate),2) + '-' + strzero(day(mfdate),2)
else
if valtype(mfdate) = 'C'
mfdate:=ctod(mfdate)
mfecreturn:=str(year(mfdate),4,0) + '-' + strzero(month(mfdate),2) + '-' + strzero(day(mfdate),2)
endif
endif
return(mfecreturn)

espero que sea lo que necesitas

saludos

jparada
Posts: 233
Joined: Fri Jan 23, 2009 5:18 pm

Post by jparada » Thu May 31, 2018 1:20 am

Hola,

Gracias por contestar, como comenta martín con una función parecida funcionó:

Code: Select all

function DateToSQL( dFecha )
  result := "'" + StrZero( month(dFecha),2) + '/'
  result +=       StrZero( day(dFecha),2) + '/'
  result +=       StrZero( Year(dFecha),4) + "'"
return result
Pero también quería hacer pruebas con el string y basándome en esa función; funcionó como yo necesitaba:

Code: Select all

oQry += "WHERE cIdDocumentoDe IN (4,5) "
oQry += "AND cFecha BETWEEN " + "'" + "20180405" + "'" + " "
oQry += "AND " + "'" + "20180405" + "'" + " "
Saludos,
Javier

Post Reply