help - data (ano com 4 digitos)
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
Curtidas 0
Respostas
Afarias
12/11/2003
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+
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+
GOSTEI 0
Matt_nttp
12/11/2003
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?
GOSTEI 0
Matt_nttp
12/11/2003
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?
GOSTEI 0
Matt_nttp
12/11/2003
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
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
GOSTEI 0
Afarias
12/11/2003
|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+
|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+
GOSTEI 0
Hugo_sergio
12/11/2003
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)
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)
GOSTEI 0
Matt_nttp
12/11/2003
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
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
GOSTEI 0