Page 1 of 1
Error campo datetime en ADO con Harbour 3.2.0
Posted: Tue Mar 15, 2016 10:46 am
by Salvador
Hola,
En Harbour, realizando una comparación de 2 datetime cuando uno de ellos es un campo de ADO y la hora es 00:00, solo se comparan las fechas.
Este ejemplo devuelve .f.
hb_cTot( "14/03/16 12:23" ) > ::oRs:Fields("fecha"):Value // en la DB 14/03/16 00:00
Tiene alguien constancia de este problema ?
Estoy utilizando la version 3.2.0dev de Harbour
Gracias de antemano
Re: Error campo datetime en ADO con Harbour 3.2.0
Posted: Thu Mar 17, 2016 7:47 am
by nageswaragunupudi
hb_cTot( "14/03/16 12:23" )
Better you use century also. May be 14/03/16 is treated as 14/03/1916 instead of 14/03/2016.
Safest is to use hb_stot( "20160314122300" ) instead of hb_ctot()
Re: Error campo datetime en ADO con Harbour 3.2.0
Posted: Mon Mar 21, 2016 10:52 am
by Salvador
Gracias por la sugerencia, como sugiere funciona correctamente.
Pero entonces me surgen estas dudas:
Si el campo de la DB contiene 2016-03-14 00:00
hb_datetime() > ::oRs:Fields("fecha"):Value , devuelve .f. para cualquier hora del día 2016-03-14
hb_valtostr(::oRs:Fields("fecha"):Value) devuelve "14/03/2016" (sin hora)
Si el campo de la DB contiene 2016-03-14 00:01 lo anterior funciona correctamente.
Re: Error campo datetime en ADO con Harbour 3.2.0
Posted: Mon Mar 21, 2016 1:41 pm
by nageswaragunupudi
We should be careful (1) when comparing DateTime ( valtype T ) with Date ( valtyle D ) and also (2) know for sure that the value returned by fields(..):value is of type T or D. Unfortunately xHarbour and Harbour do not behave exactly the same way.
Try this test
Code: Select all
d := date()
t := hb_datetime() // datetime() in xharbour
? t > d, t < d, t == d
Harbour returns .f., .f., .f.
xHarbour returns .f., .f., .t.
My advice:
Convert both to DateTime types and compare:
We have two function FW_DTOT() and FW_TTOD()
example:
HB_DATETIME() > FW_DTOT( oRs:Fields( "date" ):Value )
If we are interested in the date part only then compare
FW_TTOD( <datetimevalue> ) > FW_TTOD( .... )
Re: Error campo datetime en ADO con Harbour 3.2.0
Posted: Tue Mar 22, 2016 9:57 am
by Salvador
Con Harbour y SQL server:
Code: Select all
? valtype(::oRs:Fields("smalldatetime"):Value) // 2016-03-22 00:00:00.000
? valtype(::oRs:Fields("smalldatetime"):Value) // 2016-03-22 10:30:15.000
D
T
Es correcto ?