AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 19679
Accepted
Timka
Timka
Asked: 2012-06-22 09:13:11 +0800 CST2012-06-22 09:13:11 +0800 CST 2012-06-22 09:13:11 +0800 CST

Como definir o banco de dados Postgresql para ver a data como "MDY" permanentemente

  • 772

Como posso definir meu banco de dados para ver a 'data' como "MDY" sem executar:

SET datestyle = "ISO, MDY";

toda vez que estou tentando acessá-lo? Estou usando o Postgresql versão 9.1, Ubuntu 12.04. A localidade do meu sistema, no momento da instalação do banco de dados, foi definida como en_CA.utf8e recentemente mudei para en_US.utf8.

show lc_CTYPE

retorna: -->"en_CA.UTF-8"

mas

show LC_CoLLATE

retorna: -->"en_CA.UTF-8"

postgresql date-format
  • 3 3 respostas
  • 60690 Views

3 respostas

  • Voted
  1. Best Answer
    dezso
    2012-06-22T10:04:14+08:002012-06-22T10:04:14+08:00

    Eu costumava ter um problema muito semelhante anos atrás, e então descobri que posso fazer

    ALTER DATABASE database_name SET datestyle TO "ISO, MDY";
    

    Tente isso. (Isso funciona por banco de dados, para uma solução para todos os seus bancos de dados, defina esse parâmetro em você postgresql.conf- graças a @a_horse_with_no_name.)

    Por favor, esteja ciente de que a configuração padrão não é independente de localidade . No entanto, depois de initdbconfigurá-lo para o que quiser, você pode alterá-lo no arquivo postgresql.conf.

    O comentário de @swasheck me fez notar que, com minhas configurações:

    test=# SHOW lc_ctype;
          lc_ctype
    --------------------
     Hungarian, Hungary
    (1 row)
    
    
    test=# SHOW lc_time;
          lc_time
    --------------------
     Hungarian, Hungary
    (1 row)
    

    configuração datestyletem o seguinte efeito:

    SET datestyle TO "ISO, MDY";
    
    SELECT current_date;
        date
    ------------
     2012-06-21
    (1 row)
    

    Agora, isso não é realmente esperado - e é o mesmo em outro servidor com en_US.UTF8, também. Tentar "ISO, DMY"também me sugere que a "ISO"parte está mais ou menos substituindo a outra parte ao produzir uma saída . Para valores de entrada , tem o efeito esperado, conforme resumido na tabela abaixo:

                              input values
               '2016/01/21'   '01/21/2016'   '21/01/2016'         output
    ──────────────────────────────────────────────────────────────────────
    ISO, YMD        OK             --             --            2016-01-21
    ISO, DMY        --             OK             --            2016-01-21
    ISO, MDY        --             --             OK            2016-01-21
    

    -- significa acima que o estilo de entrada fornecido resulta em um erro para a datestyleconfiguração fornecida.

    Após a leitura cuidadosa da documentação, pode-se ver que datestyleé um par de configurações parcialmente conflitantes:

    Por motivos históricos, essa variável contém dois componentes independentes: a especificação do formato de saída (ISO, Postgres, SQL ou alemão) e a especificação de entrada/saída para ordenação ano/mês/dia (DMY, MDY ou YMD).

    Para mim, isso significa que é preciso encontrar aquele que atenda às suas necessidades experimentando um pouco - mas a melhor maneira é deixá-lo no padrão e sempre usar um formato de entrada inequívoco. Dois deles são 'YYYY-MM-DD'e 'YYYYMMDD'. Eu prefiro o primeiro - mesmo usando este IRL ;)

    Observação: a datestyleconfiguração (e outras configurações de tempo de execução) de postgresql.confpode ser substituída por um ALTER DATABASE bla SET datestyle ..., definindo-a permanentemente para um único banco de dados ou SET datestyle TO ...definindo-a para a sessão atual. Este último pode ser útil ao importar alguns dados de terceiros com um formato de data diferente.

    • 40
  2. vijay
    2016-01-22T12:41:43+08:002016-01-22T12:41:43+08:00

    Obrigado @a_horse_with_no_name| @dezso | @ypercubeᵀᴹ

    Eu quero escrever uma resposta simples de implementar: Etapas

    Maneira 1 : configuração de estilo de data apenas por banco de dados

    1. show datestyle;mostrar o estilo de data atual "ISO, DMY " ou "ISO, MDY"

    2. Agora, dependendo do que você deseja no postgres DMY ou MDY definido na consulta abaixo

      ALTER DATABASE "my_database_name" SET datestyle TO "ISO, DMY";

      ou

      ALTER DATABASE "my_database_name" SET datestyle TO "ISO, MDY";

    3. Etapa mais importante: Sempre após definir o estilo de data, reinicie o postgres

      sudo service postgresql restart

      Ou

      sudo /etc/init.d/postgresql restart

    4. Permite testar a configuração

      se você definiu DMY abaixo da consulta deve funcionar para você

      Consulta: select '20/12/2016'::date Saída: "2016-12-20"

      Ou

      se você definiu o MDY abaixo da consulta deve funcionar para você

      Consulta: select '12/19/2016'::date Saída: "2016-12-19"

    Maneira 2 : Permanentemente: tudo o que você definir no arquivo de configuração será definido em todos os bancos de dados que você criará no futuro

    1. Em /etc/postgresql/9.3/main/postgresql.conf set

      datestyle = 'iso, dmy'OUdatestyle = 'iso, mdy'

    2. Etapa mais importante: Sempre após definir o estilo de data, reinicie o postgres

      sudo service postgresql restart

      Ou

      sudo /etc/init.d/postgresql restart

    3. Permite testar a configuração

      se você definiu DMY abaixo da consulta deve funcionar para você

      Consulta: select '20/12/2016'::date Saída: "2016-12-20"

      Ou

      se você definiu o MDY abaixo da consulta deve funcionar para você

      Consulta: select '12/19/2016'::date Saída: "2016-12-19"

    • 6
  3. nascente_diskreta
    2021-11-18T05:46:49+08:002021-11-18T05:46:49+08:00

    Expandindo a resposta do @deszo (não tenho reputação suficiente para comentar lá), ISOo parâmetro substitui a especificação dia-mês-ano na saída. Se você deseja ter entrada e saída no mesmo formato , você precisa usar SET DATESTYLE TO 'SQL, MDY', ou SET DATESTYLE TO 'MDY, SQL'(a ordem dos parâmetros é inferida pelo Postgres).

    • 0

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve