Página 1 de 1

Consultas con select

Publicado: Sab May 10, 2008 8:08 am
por PEDRO DE LEON RODAS[1]
Amigos otra vez yo dando molestias y recurriendo a ustedes.
Como puedo hacer para generar una consulta con select en la cual quiero
obtener informacion de una tabla por medio de un rango de fecha.
Ejemplo.
tengo dos objetos de fecha
uno llamado inicial
y el otro llamdao final
Y mi campo es fecha (tipo Date())
Tengo declarado mis variables de memoria
private var_ini,var_fin
var_ini=::inicial:dValue
var_fin=::final:dValue
cuando hago la consulta la hago de la siguiente manera:
::Conexion:Execute("select * from mi_tabla order by mi_tabla.nombre where
mi_tabla.Fecha>='&var_ini' .and. mi_tabla.Fecha<='&var_fin'")
Pero no me funciona.
Perdonen mi ignorancia, he logrado hacer otros tipos de consultas sin ningun
problema, pero con esta ya me enrede.
De antemano, mil gracias

Consultas con select

Publicado: Sab May 10, 2008 10:13 am
por jose.luis
Pedro,
Esta sentencia me funciona bajo SqlServer
SELECT * FROM miTabla WHERE miCampoDT > '01-10-2008 10:00' and miCampoDT <
'01-11-2008'
Saludos,
José Luis Capel
"PEDRO DE LEON RODAS" <deleonpe@terra.com.mx> escribió en el mensaje
news:[email=48252ddb@ozsrv2.ozlan.local...]48252ddb@ozsrv2.ozlan.local...[/email]
> Amigos otra vez yo dando molestias y recurriendo a ustedes.
>
> Como puedo hacer para generar una consulta con select en la cual quiero
> obtener informacion de una tabla por medio de un rango de fecha.
>
> Ejemplo.
>
> tengo dos objetos de fecha
> uno llamado inicial
> y el otro llamdao final
>
> Y mi campo es fecha (tipo Date())
>
> Tengo declarado mis variables de memoria
> private var_ini,var_fin
> var_ini=::inicial:dValue
> var_fin=::final:dValue
>
> cuando hago la consulta la hago de la siguiente manera:
>
> ::Conexion:Execute("select * from mi_tabla order by mi_tabla.nombre where
> mi_tabla.Fecha>='&var_ini' .and. mi_tabla.Fecha<='&var_fin'")
>
> Pero no me funciona.
>
> Perdonen mi ignorancia, he logrado hacer otros tipos de consultas sin
> ningun problema, pero con esta ya me enrede.
>
> De antemano, mil gracias
>
>

Consultas con select

Publicado: Sab May 10, 2008 5:47 pm
por ignacio
Pedro,
LOCAL cSelect
TEXT INTO cSelect
SELECT *
FROM MiTabla
WHERE MiTabla.Fecha BETWEEN ? AND ?
ENDTEXT
WITH OBJECT oDataSource
aData := :QueryRow( :BuildSQLSt( cSelect, date()-1, date() ) )
END WITH
En este caso la búsqueda se realiza entre las fechas date() -1 y date(). Pero en esto hay que tener un cuidado extremo con las horas y minutos. Normalmente casi todos los servidores de bases de datos SQL guardan las fechas junto con la hora. Si tu no indicas la hora, como en el ejemplo, ten en cuenta que al servidor le llegará una expresión del tipo:
"2008-05-10 00:00:00"
Por lo tanto, un registro con el valor "2008-05-10 00:00:01" no entrará en la select. Esto es muy importante ha tener en cuenta, sobre todo si estás utilizando disparadores en la base de datos que automáticamente estén asignando la fecha a través del comando 'now' o similar.
Para evitar ese problema, puedes hacer lo siguiente:
TEXT INTO cSelect
SELECT *
FROM MiTabla
WHERE MiTabla.Fecha >? ? AND MiTabla.Fecha < ?
ENDTEXT
WITH OBJECT oDataSource
aData := :QueryRow( :BuildSQLSt( cSelect, date()-1, date()+1 ) )
END WITH
Un saludo,
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"PEDRO DE LEON RODAS" <deleonpe@terra.com.mx> escribió en el mensaje news:[email=48252ddb@ozsrv2.ozlan.local...]48252ddb@ozsrv2.ozlan.local...[/email]
> Amigos otra vez yo dando molestias y recurriendo a ustedes.
>
> Como puedo hacer para generar una consulta con select en la cual quiero
> obtener informacion de una tabla por medio de un rango de fecha.
>
> Ejemplo.
>
> tengo dos objetos de fecha
> uno llamado inicial
> y el otro llamdao final
>
> Y mi campo es fecha (tipo Date())
>
> Tengo declarado mis variables de memoria
> private var_ini,var_fin
> var_ini=::inicial:dValue
> var_fin=::final:dValue
>
> cuando hago la consulta la hago de la siguiente manera:
>
> ::Conexion:Execute("select * from mi_tabla order by mi_tabla.nombre where
> mi_tabla.Fecha>='&var_ini' .and. mi_tabla.Fecha<='&var_fin'")
>
> Pero no me funciona.
>
> Perdonen mi ignorancia, he logrado hacer otros tipos de consultas sin ningun
> problema, pero con esta ya me enrede.
>
> De antemano, mil gracias
>
>
--

Consultas con select

Publicado: Sab May 10, 2008 5:52 pm
por ignacio
Veo que hay una pequeña errata en la select. Perdón.
TEXT INTO cSelect
SELECT *
FROM MiTabla
WHERE MiTabla.Fecha >= ? AND MiTabla.Fecha < ?
ENDTEXT
WITH OBJECT oDataSource
aData := :QueryRow( :BuildSQLSt( cSelect, date()-1, date()+1 ) )
END WITH
Saludos,
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje news:4825c38e$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
Pedro,
LOCAL cSelect
TEXT INTO cSelect
SELECT *
FROM MiTabla
WHERE MiTabla.Fecha BETWEEN ? AND ?
ENDTEXT
WITH OBJECT oDataSource
aData := :QueryRow( :BuildSQLSt( cSelect, date()-1, date() ) )
END WITH
En este caso la búsqueda se realiza entre las fechas date() -1 y date(). Pero en esto hay que tener un cuidado extremo con las horas y minutos. Normalmente casi todos los servidores de bases de datos SQL guardan las fechas junto con la hora. Si tu no indicas la hora, como en el ejemplo, ten en cuenta que al servidor le llegará una expresión del tipo:
"2008-05-10 00:00:00"
Por lo tanto, un registro con el valor "2008-05-10 00:00:01" no entrará en la select. Esto es muy importante ha tener en cuenta, sobre todo si estás utilizando disparadores en la base de datos que automáticamente estén asignando la fecha a través del comando 'now' o similar.
Para evitar ese problema, puedes hacer lo siguiente:
TEXT INTO cSelect
SELECT *
FROM MiTabla
WHERE MiTabla.Fecha >? ? AND MiTabla.Fecha < ?
ENDTEXT
WITH OBJECT oDataSource
aData := :QueryRow( :BuildSQLSt( cSelect, date()-1, date()+1 ) )
END WITH
Un saludo,
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"PEDRO DE LEON RODAS" <deleonpe@terra.com.mx> escribió en el mensaje news:[email=48252ddb@ozsrv2.ozlan.local...]48252ddb@ozsrv2.ozlan.local...[/email]
> Amigos otra vez yo dando molestias y recurriendo a ustedes.
>
> Como puedo hacer para generar una consulta con select en la cual quiero
> obtener informacion de una tabla por medio de un rango de fecha.
>
> Ejemplo.
>
> tengo dos objetos de fecha
> uno llamado inicial
> y el otro llamdao final
>
> Y mi campo es fecha (tipo Date())
>
> Tengo declarado mis variables de memoria
> private var_ini,var_fin
> var_ini=::inicial:dValue
> var_fin=::final:dValue
>
> cuando hago la consulta la hago de la siguiente manera:
>
> ::Conexion:Execute("select * from mi_tabla order by mi_tabla.nombre where
> mi_tabla.Fecha>='&var_ini' .and. mi_tabla.Fecha<='&var_fin'")
>
> Pero no me funciona.
>
> Perdonen mi ignorancia, he logrado hacer otros tipos de consultas sin ningun
> problema, pero con esta ya me enrede.
>
> De antemano, mil gracias
>
>
--

Consultas con select

Publicado: Sab May 10, 2008 8:36 pm
por xAvi
Perdona Ingnacio,
Pero la otra vez que salio el tema también me quede un poco sorprendido.
Ignacio Ortiz de Zúñiga escribió:
> Normalmente casi todos los servidores de bases de datos SQL guardan las
> fechas junto con la hora. Si tu no indicas la hora, como en el ejemplo,
> ten en cuenta que al servidor le llegará una expresión del tipo:
>
> "2008-05-10 00:00:00"
>
Es cierto que hasta que yo sé SQL Server lo hace así­, no sé de otros, por eso me gustarí­a que el resto de foreros
:) si conocen de otros lo reporten, quizás así­ se pueda sacar el agua un poco más clara.
Pero ya el ANSI/ISO SQL 92 define los tipos DATE TIME y TIMESTAMP: supongo que se respetan en SQL 2006 .-
http://www.contrib.andrew.cmu.edu/~shad ... ql1992.txt
Aquí­ se puede ver un poco más claro .-
http://www.ibphoenix.com/main.nfs?a=ibp ... page=ibp_6 0_sql_date_fs
En MySQL se dispone de DATE, TIME, DATETIME y TIMESTAMP cumpliendo la normativa .-
http://dev.mysql.com/doc/refman/5.0/es/ ... me-types.h tml
Lo digo porque a la hora de implementar rutinas de transformación de xBase DATE a SQL y viceversa se tengan en cuenta. ;)
Un saludo
Xavi

Consultas con select

Publicado: Sab May 10, 2008 9:55 pm
por PEDRO DE LEON RODAS[1]
Amigos, mil gracias por su ayuda.
Solucione este problema de la consulta con campo de fechas de la siguiente
manera:
METHOD aceptarClick( oSender ) CLASS Reporte_ingresos
memvar var_inicial,var_final
Private var_inicial,var_final
var_inicial=dtos(::inicial:value)
var_final=dtos(::final:value)
::conexion:cConnect="Provider=VFPOLEDB.1;Data Source=.DATOS"
::conexion:lConnected=.t.
::conexion:Execute("select ingresos.fecha,ingresos.pc,ingresos.importe
from ingresos order by ingresos.fecha,ingresos.pc WHERE
dtos(ingresos.fecha)>='&var_inicial' .and.
dtos(ingresos.fecha)<='&var_final' )
RETURN Nil

Consultas con select

Publicado: Lun May 12, 2008 9:53 am
por ignacio
Xavi,
> Pero la otra vez que salio el tema también me quede un poco sorprendido.
Perdona, pero ... ¿De qué? entonces y ¿De qué? ahora. :-o
> Es cierto que hasta que yo sé SQL Server lo hace así, no sé de otros, por
> eso me gustaría que el resto de foreros
> :) si conocen de otros lo reporten, quizás así se pueda sacar el agua un
> poco más clara.
Yo lo veo claro. Tan sólo hay que tener en cuenta que no es igual que xBase,
eso es todo.Que junto con la fecha, suele o puede ir la hora y que en
operaciones boolenas con dicho tipo de datos hay que tenerla en cuenta.
Quizas si te explicas en que es lo que te sorprende tanto seamos capaces de
arrojar un poco de lejia en en ese agua turbia de la que hablas.
> Lo digo porque a la hora de implementar rutinas de transformación de xBase
> DATE a SQL y viceversa se tengan en cuenta. ;)
El fomato universal SQL para fechas en representación como cadena de texto
es :
"AAAA-MM-DD HH:MM:SS.MMM".
Después cada servidor implementa o soporta otro tipo de construcciones, pero
obviamente, no es un tema que le tenga por que afectar a Xailer.
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"xAvi" <jarabal_eliminar_no_spam_@gmail.com> escribió en el mensaje
news:4825eb38$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Perdona Ingnacio,
>
> Pero la otra vez que salio el tema también me quede un poco sorprendido.
>
> Ignacio Ortiz de Zúñiga escribió:
>> Normalmente casi todos los servidores de bases de datos SQL guardan las
>> fechas junto con la hora. Si tu no indicas la hora, como en el ejemplo,
>> ten en cuenta que al servidor le llegará una expresión del tipo:
>> "2008-05-10 00:00:00"
>>
>
> Es cierto que hasta que yo sé SQL Server lo hace así, no sé de otros, por
> eso me gustaría que el resto de foreros
> :) si conocen de otros lo reporten, quizás así se pueda sacar el agua un
> poco más clara.
>
> Pero ya el ANSI/ISO SQL 92 define los tipos DATE TIME y TIMESTAMP: supongo
> que se respetan en SQL 2006 .-
> http://www.contrib.andrew.cmu.edu/~shad ... ql1992.txt
>
> Aquí se puede ver un poco más claro .-
> http://www.ibphoenix.com/main.nfs?a=ibp ... page=ibp_6 0_sql_date_fs
>
> En MySQL se dispone de DATE, TIME, DATETIME y TIMESTAMP cumpliendo la
> normativa .-
> http://dev.mysql.com/doc/refman/5.0/es/ ... me-types.h tml
>
> Lo digo porque a la hora de implementar rutinas de transformación de xBase
> DATE a SQL y viceversa se tengan en cuenta. ;)
>
> Un saludo
> Xavi

Consultas con select

Publicado: Lun May 12, 2008 4:35 pm
por xAvi
Ignacio,
Que no. Que en ANSI SQL el tipo DATE no incorpora la hora, eso es DATETIME o TIMESTAMP.
Y lo digo sin ningún tipo de acritud ni ganas de dar la nota, lo digo por ayudar, aunque aveces pienso que mejor me callo. :)
Bueno, ahora en el 2008 lo admite también MicroSoft .-
http://technet.microsoft.com/es-es/maga ... 34692.aspx
Un saludo
Xavi
PD: Supongo que funcionan los links para no tener que pegar el contenido.
Ignacio Ortiz de Zúñiga escribió:
> Xavi,
>
>> Pero la otra vez que salio el tema también me quede un poco sorprendido.
>
> Perdona, pero ... ¿De qué? entonces y ¿De qué? ahora. :-o
>
>> Es cierto que hasta que yo sé SQL Server lo hace así­, no sé de otros, por
>> eso me gustarí­a que el resto de foreros
>> :) si conocen de otros lo reporten, quizás así­ se pueda sacar el agua un
>> poco más clara.
>
> Yo lo veo claro. Tan sólo hay que tener en cuenta que no es igual que xBase,
> eso es todo.Que junto con la fecha, suele o puede ir la hora y que en
> operaciones boolenas con dicho tipo de datos hay que tenerla en cuenta.
> Quizas si te explicas en que es lo que te sorprende tanto seamos capaces de
> arrojar un poco de lejia en en ese agua turbia de la que hablas.
>
>> Lo digo porque a la hora de implementar rutinas de transformación de xBase
>> DATE a SQL y viceversa se tengan en cuenta. ;)
>
> El fomato universal SQL para fechas en representación como cadena de texto
> es :
>
> "AAAA-MM-DD HH:MM:SS.MMM".
>
> Después cada servidor implementa o soporta otro tipo de construcciones, pero
> obviamente, no es un tema que le tenga por que afectar a Xailer.