indexar campo datatime

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

indexar campo datatime

Mensagem por Itamar M. Lins Jr. »

Ola!
Como indexar um campo no formato data time com o parâmetro "for" ?

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

indexar campo datatime

Mensagem por alxsts »

Olá!

Qual base de dados você está usando?
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

indexar campo datatime

Mensagem por Itamar M. Lins Jr. »

Dbf mesmo
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

indexar campo datatime

Mensagem por Jairo Maia »

Não sei se entendi direito, mas seria isso?:

Código: Selecionar todos

INDEX ON DToS( datavenda ) + horario TAG Vendas FOR ( datavenda <= Date() .And. horario >= "00:00:00" )
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

indexar campo datatime

Mensagem por Itamar M. Lins Jr. »

Usando o campo no dbf datetime [@] não é mais necessário grava a hora em campo separado.
Eu tinha editado um campo datatime via hbrun sem ativar o set century on e fiz uma confusão aqui nos testes.
Para indexar basta o dtos() mesmo com a clausula for.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

indexar campo datatime

Mensagem por alxsts »

Olá!

Não conhecia este tipo de dado datetime em xBase. Por isso perguntei em outra mensagem.

Poderia dar um exemplo de criação de tabela e manipulação de variável com este tipo de dado?

Grato
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

indexar campo datatime

Mensagem por Itamar M. Lins Jr. »

Claro
Tem muita coisa para ser explorada no Harbour.
Harbour tipos estendidos:
O campo datetime [@]
Por exemplo:

Código: Selecionar todos

   aStru :=  {{'Data','@',08,0}}
   dbcreate("temp.dbf",aStru,"DBFCDX")
Irá criar um dbf e quando salvar a data vai salvar a hora junto.
No Browse é mostrado assim
SET DATE FORMAT to "DD-MM-YYYY"
20-08-2013 18:26:00.000 isso mesmo com horas, minutos, segundos...
Aceita todos os comandos para data e mais outros tantos para manipulação de horas etc...
Se usar valtype(data) //Retorna "T" ao invés de "D"
M Memo 4 or 8 Memo
+ AutoInc 4 Auto increment
= ModTime 8 Last modified date & time of this record
^ RowVers 8 Row version number; modification count of this record
@ DayTime 8 Date & Time
I Integer 1, 2, 3, 4 or 8 Signed Integer ( Width : )" },;
T Time 4 or 8 Only time (if width is 4 ) or Date & Time (if width is 8 ) (?)
V Variant 3, 4, 6 or more Variable type Field
Y Currency 8 64 bit integer with implied 4 decimal
B Double 8 Floating point / 64 bit bina
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

indexar campo datatime

Mensagem por alxsts »

Olá Itamar.

Obrigado pela informação. Nunca imaginei isso. Funciona em DBFNTX?
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

indexar campo datatime

Mensagem por Jairo Maia »

Olá Pessoal,
Itamar M. Lins Jr. escreveu:Tem muita coisa para ser explorada no Harbour.
Tem viu. Eu também não conhecia esse recurso. Valeu a dica.
alxsts escreveu: Funciona em DBFNTX?
Alexandre, Sim! Testei também em DBFNTX.

Porém, há diferença de comportamento entre Harbour e xHarbour. Veja as anotações no próprio exemplo abaixo:

Código: Selecionar todos

/*
  Usar as libs: xhb e hbct
*/

Request DbfCdx

Function Main

 Set Date Brit
 Set Century On

 Clear Screen

 xDateTime := DateTime()

 /*
   a ValType() em xHarbour retorna D, e em Harbour T,
   mas a letra T de Time, nao a de True .T.
 */
 ?
 ? ValType( xDateTime )

 ? Hb_IsDateTime( xDateTime )
 ? TtoS( xDateTime )
 ? TtoC( xDateTime )

 cDateTime := TtoC( xDateTime )
 ? CtoT( cDateTime )

 cDateTime := TtoS( xDateTime )
 ? StoT( cDateTime )

 ? CharOnly( "0123456789", TtoC( xDateTime ) )

 aStru := { { 'Data', '@', 08, 0 } }
 DbCreate( "Temp.Dbf", aStru, "DBFCDX" )

 Use Temp Shared New

 Append Blank
 Repl data With Date()  // com Date(), veja obs abaixo

 Append Blank
 Repl data With DateTime()  // com DateTime(), veja obs abaixo

 Go Top
 Browse()

 /*
    Obs:
     com apenas Date() em Harbour, a hora fica zerada: 00:00:00.000
     com DateTime() hora e data corrente sao gravadas. em xHarbour
     em ambos casos data e hora corrente sao gravados
 */

 SetPos( 10, 1 )

Return
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Responder