Ir para o conteúdo

 Voltar a Fórum do For...
Tela cheia

data do postgre

13 de Julho de 2012, 15:01 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 7 vezes

Vi que ja tem uma para essa questão para MySql

Quando gravo um campo data sai correto por exemplo:

01/01/1990

Quando vou na aba listagem e clico em alterar a data retorna

19/90/0101

Existe alguma forma de corrigir isso?

 

 

Autor: Divaldo Almir Antunes


33 comentários

  • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
    13 de Julho de 2012, 23:14

     

    Divaldo,

    A solução é a mesma do mysql só que para o postgres voce tem usar o comando

    SELECT to_char(CAMPO_DATA,'DD/MM/YYYY') AS CAMPO_DATA no lugar do
    DATE_FORMAT(CAMPO_DATA, '%d/%m/%Y)  
    Abraço.

    • 6441733b7a5cce14bff29112138038d6?only path=false&size=50&d=404Divaldo Almir Antunes(usuário não autenticado)
      14 de Julho de 2012, 7:47

       

      no arquivo DAO na parte de select's mudei para

        return self::executeSql('select
               id_lic
              ,li01_contribuinte
              ,li01_nmempresa
              ,li01_nomefantasia
              ,to_char(li01_inicio,"DD/MM/YYYY") as li01_inicio
              ,li01_cgccpf
              ,li01_horario
              ,li01_horario1
              ,li01_especial
              ,li01_ines
              ,li01_ender
              ,li01_numero
              ,li01_bairro
              ,li01_atividade
              ,li01_restricoes
              ,li01_datcad
              ,li01_taxarefer
              ,li01_area
              from cad_lic'.
        ( ($where)? ' where '.$where:'').
        ( ($orderBy) ? ' order by '.$orderBy:''));

      Como o texto do select esta entre '  ' ,  eu usei "  ", quando executo o form vem o erro:

      Erro PDO: SQLSTATE[42703]: Undefined column: 7 ERRO: coluna "DD/MM/YYYY" não existe LINE 6: ,to_char(li01_inicio,"DD/MM/YYYY") as li01_inicio

      Eu estava acostuma a usar no delphi o QuotedStr para fazer isso.

      Desculpe o excesso de perguntas, mas trabalhei muito tempo com Delphi e agora estou me aventurando pelo PHP e postgre

      Mais uma vez

      Obrigado Luis Eugenio pelas respostas

      • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
        14 de Julho de 2012, 9:05

         

        Divaldo,
        em php existe o recurso que chamamos de "escapar" o caractere para resolver este problema de aspas dentro de aspas.

        Existem duas formas de resolver, a primeira é trocando as aspas de fora para aspas duplas, porque o php aceita as duas, já o comando sql tem que ser aspas simples. Ficaria assim:

        return self::executeSql("select
                 id_lic
                ,li01_contribuinte
                ,li01_nmempresa
                ,li01_nomefantasia
                ,to_char(li01_inicio,'DD/MM/YYYY') as li01_inicio
                ,li01_cgccpf
                ,li01_horario
                ,li01_horario1
                ,li01_especial
                ,li01_ines
                ,li01_ender
                ,li01_numero
                ,li01_bairro
                ,li01_atividade
                ,li01_restricoes
                ,li01_datcad
                ,li01_taxarefer
                ,li01_area
                from cad_lic".
          ( ($where)? ' where '.$where:'').
          ( ($orderBy) ? ' order by '.$orderBy:''));

        a outra é deixando do jeito que voce ja fez mas escapando as aspas simples do parametro 'DD/MM/YYYY' adicionando uma barra invertida '\' na frente de cada uma assim:

        ,to_char(li01_inicio,\'DD/MM/YYYY\') as li01_inicio
          

        Abraço.

Essa comunidade não possui posts nesse blog