[firebase-br] Tipos Date and Time

Carlos H. Cantu listas em warmboot.com.br
Sáb Maio 9 21:36:20 -03 2020


Desculpe mas eu realmente ainda não entendi o seu problema, nem o que
você quer fazer e nem "onde" quer fazer. Talvez as diferenças do
português brasileiro com o de Portugal não estejam colaborando.

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

MR> Desculpe. Isso pergunto eu?
MR> Digo, porque é o resultado do que aqui estou a experimentar com o front
MR> -end que uso para manutenção
MR> EMS-SqlManager, mas baixei umas versoes demo de outros e é a mesma coisa.
MR> Se no meu Windows o Formato data for dd/mm/yyyy, temos que:
MR> select cast('Now' as date) from rdb$database;
MR> -- Result:  "CAST" "09/05/2020";
MR> Se mudo para yyyy-mm-dd :
MR> select cast('Now' as date) from rdb$database;
MR> -- Result:  "CAST" 2020-05-09
MR> A ferramenta que uso faz assim, talqualmente o Delphi (IBX).
MR> Eis o porquê do que afirmo e junto prints:

MR> Enquanto isso, adianto que resolvi parcialmente a questão,  é puro SQL mas
MR> que não é fácil, porque falta resolver quando o ano no Windos estiver
MR> setado para dois digitos, assim: yy-mm-dd ou dd/mm/yy
MR> LPAD( TRIM(CAST( extract(YEAR    from DT_LANC) AS CHAR(4))), 4,'0') ANO,
MR> LPAD( TRIM(CAST( extract(MONTH from DT_LANC) AS CHAR(2))), 2,'0') MES,
MR> LPAD( TRIM(CAST( extract(DAY      from DT_LANC) AS CHAR(2))) ,2,'0') DIA,
MR> e, para "Char()" porque numérico não tem zeros à esquerda, pelo menos não
MR> conheço outra forma de o fazer

MR> Todavia, ainda não consegui, não sei como resolver a questão quando o
MR> formato do ano tiver apenas 2 digitos YY-mm-dd; talvez assignando primeiro
MR> para uma variável auxiliar, depois de passado a Char, caso os dois
MR> primeiros sejam zero. Ainda não vi não sei o que vai dar, e eventualmente,
MR> desprezá-los!?

MR> E percebo o espanto do Cantú.
MR> Mas isso é só no ISQL que é sempre aaaa-mm-dd, mas ninguém usa o isql para
MR> desenvolver aplicações.
MR> C:\Program Files (x86)\Firebird\Firebird_3_0>isql
MR> Use CONNECT or CREATE DATABASE to specify a database
SQL>> connect 'D:\TRAB\FB30\Dados\CAIXA.FDB' User 'SYSDBA' password
MR> '******'';
MR> Database: 'D:\TRAB\FB30\Dados\CAIXA.FDB', User: SYSDBA
SQL>> Select Cast('Now' as Date) From RDB$DATABASE;

MR>        CAST
MR> ===========
MR> 2020-05-09

MR> Todavia o Delphi (IBX) assume o formato do Windows; se eu mudar outra vez
MR> para yyyy-MM-dd imagem anexo(1)
MR> o ISQL continuar a dar
MR>        CAST
MR> ===========
MR> 2020-05-09
MR> Já no Delphi:
MR> [image: image.png]
MR> Porém no windows muda-se yyyy-MM-dd e o Delphi acompanha:
MR> [image: image.png]

MR> Pena é que o SET não dê para dizer como é que queremos e ai tínhamos
MR> garantias que dentro do programa iria apresentar-se de acordo com o
MR> programado no "protocolado" para a aplicação, porque do lado do Delphi não
MR> vemos o ISQL
MR> Por exemplo na "Database Trigger " seria ideal para configurar esse SET, já
MR> que o Delphi assume por defeito o formato configurado para o sistema
MR> "Sistema Operativo", salvo erro no cLocale do TFormatSettings. E, pelo
MR> andar da carruagem, suspeito que o Linux também. Não sei, alguém já testou?
MR> Era interessante saber.
MR> Não está fácil compatibilizar todas as opções e manter o programa em Delphi
MR> a correr  sem problemas. Se tiver o windows e o aaaa-mm-dd porreirinho não
MR> tem problemas, agora se este cliente tem um outro formato há muita coisa a
MR> considerar.

MR> Espero ter esclarecido, e demonstrado à saciedade as razões subjacentes
MR> questão que levantei.
MR> se alguém puder deixar alguma dica mais agradeço. Obrigado

MR> Com os meus melhores cumprimentos
MR> Mário Agostinho Reis
MR> 919262146

MR> Esta mensagem contém informação de natureza confidencial e é
MR> exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
MR> receber este email agradecemos que não o copie nem o reenvie e que nos
MR> notifique do ocorrido através do email de resposta.
MR> [image: cloudHQ]
MR> <https://chrome.google.com/webstore/detail/free-email-tracker/nknojfclnachdkpdkjbbhbkgpnladhnj>
MR> Powered
MR> by
MR> cloudHQ
MR> <https://chrome.google.com/webstore/detail/free-email-tracker/nknojfclnachdkpdkjbbhbkgpnladhnj>


MR> Carlos H. Cantu <listas em warmboot.com.br> escreveu no dia sábado, 9/05/2020
MR> à(s) 13:06:

>> Porque está dizendo isso? O que mudou? Internamente no FB as datas são
>> sempre representadas no formato AAAA-MM-DD.
>>
>> []s
>> Carlos H. Cantu
>> eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
>> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
>>
>> MR> Olá Companheiros
>> MR> Tenho ainda algumas rotinas implementadas que para tratar data como
>> MR> ANO= Sustring( MinhaData from 1 to 4)  etc e até hoje sem problemas.
>> Porém
>> MR> daqui em diante já não, porque uma vezes vai-me aparecer a data
>> dd/mm/yyyy
>> MR> outras yyyy-mm-dd e outras ainda dd/mm/yy
>> MR> ou ainda yy-mm-dd. Como lidar com este problema? Há alguma forma de
>> validar
>> MR> o formato em uso a partir do Firebird (no delphi temos o Encode e o
>> Decode,
>> MR> mas e aqui?
>> MR> Alguém tem uma pista? Obrigado
>> MR> Abr.
>> MR> Com os meus melhores cumprimentos
>> MR> Mário Agostinho Reis
>> MR> 919262146




Mais detalhes sobre a lista de discussão lista