Problemas con DATETIME()

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
AidTIC
Posts: 117
Joined: Mon Apr 22, 2013 8:29 am
DBs Used: DBF
Contact:

Problemas con DATETIME()

Post by AidTIC »

Hola, estoy tratando de pasar datos access a dbf, el problema es que un campo del access es tipo DATETIME y no veo la manera de pasarlo a DATE.

Alguien me puede ayudar??
Skydone Solutions
www.skydone.com
User avatar
esgici
Posts: 4543
Joined: Wed Jul 30, 2008 9:17 pm
DBs Used: DBF
Location: iskenderun / Turkiye
Contact:

Re: Problemas con DATETIME()

Post by esgici »

AidTIC wrote:Hola, estoy tratando de pasar datos access a dbf, el problema es que un campo del access es tipo DATETIME y no veo la manera de pasarlo a DATE.

Alguien me puede ayudar??
Google wrote:I'm trying to pass data access dbf, the problem is that a field access is DATETIME type and I see no way to pass a DATE.

Can someone help me?
If you accept aid from non Spanish spoken people :

Probably you need Date + Time type field ( @ ).

For more info look at here.

Happy HMG'ing :D
Viva INTERNATIONAL HMG :D
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Problemas con DATETIME()

Post by Pablo César »

Hola AidTIC, siendo más claro...

Seguramente el campo a que te refieres es del tipo TimeStamp, compuesto por Fecha y Hora.

Entonces seria cuestion de convertirlo en caracter y subtraer las dos informaciones en variables del tipo caracter, utilizandote de SubStr (para el caso en ANSI) o hb_USubStr (en UNICODE) y luego pasarlos al tipo DATE.

No sé en que padron debe estar ese campo que te refieres. Si nos muestras, podremos te indicar la solucion.

Para exibir una string puedes utilizar el MsgDebug(<campo_DATETIME>) y pasanos como te los exibió.

Despues seria cuestión de utilizar el formato regional, transformando la variable caracter de la fecha para un valor tipo FECHA. Pero tendríamos que saber cual es el formato de fecha que utilizas: dd/mm/aaaa, etc..

Veamos un ejemplo:

Code: Select all

#include <hmg.ch>

Function Main()
Local tTimeStamp:=hb_DateTime()

MsgDebug( "1. ValType of tTimeStamp:",              ValType(tTimeStamp) )
MsgDebug( "2. Get current DateFormat:",             Set( _SET_DATEFORMAT ) )
MsgDebug( "3. Current DateTime:",                   tTimeStamp )
MsgDebug( "4. Transform tTimeStamp to Character:",  hb_TToC( tTimeStamp ) )
MsgDebug( "5. Transform tTimeStamp to Date:",       hb_TToD( tTimeStamp ) )
MsgDebug( "6. Transform tTimeStamp to String:",     hb_TToS( tTimeStamp ) )
MsgDebug( "7. Take tTimeStamp as Time:",            hb_TToT( tTimeStamp ) )
MsgDebug( "8. ValType of tTimeStamp:",              ValType( hb_TToT( tTimeStamp ) ) )
Return Nil

Function hb_TToT( tTimeStamp )
Return HB_NToT( HB_TToN( tTimeStamp ) % 1 )
Creo que con el item 5 ya consigues obtner el campo DATE pero para lograr el TIME irá requerir más elaboracion teniendo en cuenta tu DateFormat para subtrairlo como string.
Aunque con el item 4, te irá ser más fácil obtener los los datos en forma de strings.
Pantalla1.png
Pantalla1.png (42.7 KiB) Viewed 3537 times
Espero que este ejemplo te dé un clara visión de como podemos tratar campos TimeStamp.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
martingz
Posts: 395
Joined: Wed Nov 18, 2009 11:14 pm
Location: Mexico

Re: Problemas con DATETIME()

Post by martingz »

AidTIC como estas recuperando los datos desde access, si es con adordd, es muy facil

yo uso esto
RDDINFO( RDDI_CONNECT, { "ODBC", "DBQ=" + basedatos + ";Driver={Microsoft Access Driver (*.mdb)};Uid=" + UserId + ";Pwd=" + Pass } )
DBUSEAREA( .T.,, "select din,cstr(clock) as fechacompleta,Format(clock,'dd/mm/yyyy') as fechasinhora,Format(clock,'hh:mm:ss') as mhora from ras_AttRecord", "ras_AttRecord" )

espero que te sea util


i use this with adordd
RDDINFO( RDDI_CONNECT, { "ODBC", "DBQ=" + basedatos + ";Driver={Microsoft Access Driver (*.mdb)};Uid=" + UserId + ";Pwd=" + Pass } )
DBUSEAREA( .T.,, "select din,cstr(clock) as fechacompleta,Format(clock,'dd/mm/yyyy') as fechasinhora,Format(clock,'hh:mm:ss') as mhora from ras_AttRecord", "ras_AttRecord" )



saludos
p.d. cualquier cosa en que pueda ayudarte con todo gusto
User avatar
AidTIC
Posts: 117
Joined: Mon Apr 22, 2013 8:29 am
DBs Used: DBF
Contact:

Re: Problemas con DATETIME()

Post by AidTIC »

Creo que no me he explicado bien, tengo una variable que es de tipo DATETIME.

msginfo(vFecha) // 12-11-2015 00:00:00:000

si le hago un dtoc(vFecha)

+ + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Error BASE/1118 Argumento error: DTOC

Creo que no me he explicado bien, tengo una variable que es de tipo DATETIME.

msginfo(vFecha) // 12-11-2015 00:00:00:000

si le hago un dtoc(vFecha)

Error BASE/1118 Argumento error: DTOC
Skydone Solutions
www.skydone.com
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Re: Problemas con DATETIME()

Post by Pablo César »

AidTIC wrote:Creo que no me he explicado bien, tengo una variable que es de tipo DATETIME.

msginfo(vFecha) // 12-11-2015 00:00:00:000

si le hago un dtoc(vFecha)

Error BASE/1118 Argumento error: DTOC
Ya probaste con:

hb_TToD( vFecha ) ?

Asi como lo demonstré en mi ejemplo.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Problemas con DATETIME()

Post by Pablo César »

Pensando bien lo que dijiste ahora ultimo con má sinformacion.

Ese error ocurre porque tu variable no es del tipo DATE ni tampoco es del tipo TimeStamp.

Por lo que parece es del tipo caracter. Entonces debes obtener la fecha con SubStr(vFecha,1,10).

Code: Select all

cFecha:="12-11-2015 00:00:00:000"

Set Century On
Set Date Format To "dd-mm-yyyy" // Suponiendo que 12 es el dia y 11 el mes
dFecha := CToD( SubStr( cFecha,1,10 ) ) 
Digo esto, porque sinó te daria error al usar el MsgInfo. Porque el MsgInfo, solo acepta strings.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
User avatar
AidTIC
Posts: 117
Joined: Mon Apr 22, 2013 8:29 am
DBs Used: DBF
Contact:

Re: Problemas con DATETIME()

Post by AidTIC »

Solucionado.

hb_TToD( vFecha )

gracias a todos por vuestro tiempo e interés.
Skydone Solutions
www.skydone.com
Post Reply