Fórum help - data (ano com 4 digitos) #40031

12/11/2003

0

eu gostaria de saber o pq disso ocorrer, eu estou tendo uns probleminhas com o interbase pelo seguinte, estou utilizando numa tabela um campo tipo DATE e li num help dele que o interbase utiliza anos com 4 digitos, soh que quando eu tento adicionar uma data com ano de 4 digitos pelo sql no delphi (Delphi 7, paleta interbase, IBSQL) e busco esta data no sistema ele soh retorna 2 digitos, mesmo eu alterando novamente ele retorna 2 digitos novamente, tentei pelo ibconsole altera-lo para 4 digitos mas ele ainda retorna para 2 digitos, o q pode estar acontecendo?


Matt_nttp

Matt_nttp

Responder

Posts

12/11/2003

Afarias

Em um banco de dados a Data é só um NÚMERO! que então, é ´traduzido´ para uma DATA.

Vc pode mostrar a data como quizer, em qualquer formato!! Isso não é algo determinado!!! A data *não* é armazenada neste ou naquele formato!!!

O procedimento padrão é definir a propriedade DisplayFormat do TField com o formato q vc deseja.

Se vc usa DateToStr para formatar a data, a formatação é dada pela variável ShotDateFormat -- É preferível usar a função FormatDateTime pois nela vc define o formato desejado.


T+


Responder

Gostei + 0

12/11/2003

Matt_nttp

entao isto quer dizer q mesmo q eu digite dentro do ibconsole a data com o ano em quatro digitos ela não vai aparecer com os 4 digitos?


Responder

Gostei + 0

12/11/2003

Matt_nttp

bom, ateh ai tudo bem, mas teria como eu fazer uma busca por data sendo q eu coloque data como um campo do tipo varchar ou ateh mesmo integer?


Responder

Gostei + 0

12/11/2003

Matt_nttp

opa, muito obrigado, ja vi aqui como resolver por numeros inteiro e nem precisa ser complicado usando data juliana, eu posso fazer o seguinte

um numero inteiro composto dessa forma

yyyymmdd

sendo q eu posso fazer as buscas por numero entre um intervalo e outro pois as datas ficam ainda corretas e posso coloca-las num maskedit ou fazer qq tipo de função para modifica-lo


Responder

Gostei + 0

12/11/2003

Afarias

|entao isto quer dizer q mesmo q eu digite dentro do ibconsole a data
|com o ano em quatro digitos ela não vai aparecer com os 4 digitos?

Quer dizer q a INDEPENDENTE de qualquer coisa, a data aparece no formato q o cliente (programa, ex: IBConsole ou seu sistema) QUER!!


|mas teria como eu fazer uma busca por data sendo q eu coloque data
|como um campo do tipo varchar ou ateh mesmo integer?

DATA é DATA! quando fazendo uma busca, existem formatos definidos para informar a data (tipo uma string), ex: mm/dd/yyyy ou dd.mm.yyyy


select * from tabela where campo_data = ´01/31/03´;

ou

select * from tabela where campo_data > cast(´31.01.2003´ as date);

obs:: o CAST pode ser omitido, mas em alguns casos é necessário, como quando usando a função EXTRACT.


|ja vi aqui como resolver por numeros inteiro e nem precisa ser
|complicado usando data juliana, eu posso fazer o seguinte
|um numero inteiro composto dessa forma yyyymmdd

?! não entendi!!! -- use DATA como DATA, a forma q ela aperece não tem nada a ver como ela é armazenada e não tem nada a ver com os formatos válidos de entrada (q são pré-definidos).


|sendo q eu posso fazer as buscas por numero entre um intervalo e outro
|pois as datas ficam ainda corretas e posso coloca-las num maskedit ou
|fazer qq tipo de função para modifica-lo

:? Ai deu um nó! :D


T+


Responder

Gostei + 0

17/11/2003

Hugo_sergio

Pode ser a configuração do sistema...
Pode estar c/ 2 ou 4 dígitos.
pelo q vi até hoje, o Interbase retorna a data essa a configuração!

São as configurações regionais do Painel de controle do Windows...

8)


Responder

Gostei + 0

18/11/2003

Matt_nttp

bom, o interbase realmente guarda o ano com todos os digitos, entaum modificando o ano no ibconsole ele modifica tbm o q eh apresentado na aplicação, soh q como geralmente as configurações do windows estaum com a data abreviada como dd/mm/aa, para q naum seja necessário modificar as configurações do windows para q ele mostre na aplicação o ano com os 4 digitos eu achei uma solução simples, basta na hora q eu pegar os dados do banco pegar desta forma

no form create

ShortDateFormat := ´dd/mm/yyyy´;

na função q chama os dados para o maskedit

(MEData = MaskEdit __/__/____)

MEData.Text = DatetoStr(IBQuery1.FieldByName(´Data´).AsDate);

ele pega automaticamente a data com os 4 digitos agora :-)

vlw pessoal, era justamente isso q eu precisava,

flw, ateh mais


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar