Jump to content
Fivewin Brasil

como converter campo do tipo Timestamp (firebird) para campo tipo Date (dbf) ?


gibaf

Recommended Posts

Amigo,

As datas gravadas em banco de dados relacional geralmente são no formato UTC.

Se for este seu caso, a função abaixo resolve:

FUNCTION UTCtoDh(cDate, lHora)
   LOCAL cDtHo := SUBSTR(cDate,9,2)+"/"+SUBSTR(cDate,6,2)+"/"+SUBSTR(cDate,1,4)+IIF(lHora,", "+SUBSTR(cDate,12,5),"")
RETURN(cDtHo)
Link to comment
Share on other sites

Amigo,

As datas gravadas em banco de dados relacional geralmente são no formato UTC.

Se for este seu caso, a função abaixo resolve:

FUNCTION UTCtoDh(cDate, lHora)
   LOCAL cDtHo := SUBSTR(cDate,9,2)+"/"+SUBSTR(cDate,6,2)+"/"+SUBSTR(cDate,1,4)+IIF(lHora,", "+SUBSTR(cDate,12,5),"")
RETURN(cDtHo)

ola

fiz a sua dica... mas o substr "estoura" a app, tipo, dah aquela mensagem do windows q a app parou de funcionar...

dei alert no valtype(cDate) e mostrou T (Timestamp)... agora, alert no SUBSTR(cDate,9,2), ou qquer outra funcao,tipo, CStr(), ValToPrg(), TtoC(), TtoS(), tambem "estoura" a app...

se alguem mais tiver mais alguma outra dica, fico muito agradecido....

Link to comment
Share on other sites


// NOVO NA CLASSE 3.10 By Gilmer - 20/10/2014
Function TimeZone(dData)

Local cDateTimeZone,aTimeStamp,cTzd

Default dData:=Date()

aTimeStamp:=hb_atokens(tip_timestamp(dData)," ")

cTzd:=aTail(aTimeStamp)

cTzd:=Left(cTzd,Len(cTzd)-2)+":"+Right(cTzd,2)

cDateTimeZone:=StrZero(Year(dData),4)+"-"+StrZero(Month(dData),2)+"-"+StrZero(Day(dData),2)+"T"+Time()+cTzd

Return(cDateTimeZone)


Link to comment
Share on other sites

// NOVO NA CLASSE 3.10 By Gilmer - 20/10/2014
Function TimeZone(dData)
 
   Local cDateTimeZone,aTimeStamp,cTzd
 
   Default dData:=Date()
 
   aTimeStamp:=hb_atokens(tip_timestamp(dData)," ")
 
   cTzd:=aTail(aTimeStamp)
 
   cTzd:=Left(cTzd,Len(cTzd)-2)+":"+Right(cTzd,2)
 
   cDateTimeZone:=StrZero(Year(dData),4)+"-"+StrZero(Month(dData),2)+"-"+StrZero(Day(dData),2)+"T"+Time()+cTzd
 
Return(cDateTimeZone)

ola... nao deu certo... nao sei pq, mas, penso q deva ser pq o q eh recebido no parametro dData nao eh (na minha necessidade) um campo Date, mas sim Timestamp...

mas, na tentativa de usar a sua dica, gostaria dizer, o resultado q deu:

na linha:

aTimeStamp := hb_atokens(tip_timestamp(dData)," ") //retorna -3

e na linha:

cTzd := aTail(aTimeStamp) //"estoura" a app

e agora ??? hehehe

Link to comment
Share on other sites

MyTable->MyTimeStamp := DateTime() 
MyTable->MyTimeStamp := DtoC(Date()) + " " + Time() 
MyTable->MyTimeStamp := TtoS(DateTime()) 
MyTable->MyTimeStamp := TtoC(DateTime()) 

ola... como disse a segunda resposta: os comandos/funcoes DtoC, TtoS, Ttoc, SubStr, etc, "estoura" a app...

o meu problema eh quando o campo eh Timestamp e nao DataTime (sao sei se tem diferenca... penso q sim - hehehe)

aaa... obrigado pela ajuda

Link to comment
Share on other sites

Olá,

Alguém sabe informar se tem alguma classe nativa para usar o FIREBIRD sem ODBC?

Desde já agradeço a atenção.

Oliveiros Junior

ola.. SQLRDD (comercial) faz acesso nos bancos:

1) Nativo: Oracle, MySQL, Firebird

2) ODBC: Microsoft SQL Server, Oracle, DB2, MySQL, Postgress, Firebird, Ingres R3, Sybase System XI, XII and Adaptive Server, ADABAS-D, Caché

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...