PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como make_date() funciona no PostgreSQL


No PostgreSQL, o make_date() A função permite que você crie uma data a partir de seus campos separados de ano, mês e dia.

Cada parte da data é fornecida como um inteiro , e o resultado é retornado como uma data .

Sintaxe


A função tem a seguinte sintaxe:
make_date(year int, month int, day int)

Onde year , month e day são inteiros que representam o ano, mês e dia da data.

Exemplo


Aqui está um exemplo básico para demonstrar.
SELECT make_date(2020, 07, 25);

Resultado:
2020-07-25

E podemos verificar se ele retorna um tipo de dados de data com a seguinte consulta.
SELECT pg_typeof(make_date(2020, 07, 25));

Resultado:
date

O pg_typeof() função retorna o tipo de dados de seu argumento, e então eu passei make_date() como argumento..

Fora do alcance


Se algum dos argumentos estiver fora do intervalo dos valores possíveis para sua parte de data, você receberá um erro "fora do intervalo".
SELECT make_date(2020, 17, 25);

Resultado:
ERROR: date field value out of range: 2020-17-25

Aqui está novamente com um mês de 00:
SELECT make_date(2020, 00, 25);

Resultado:
date field value out of range: 2020-00-25

Passando Strings como Argumentos


A documentação do Postgres afirma que os argumentos devem ser inteiros, mas passar strings parece funcionar (provavelmente porque eles são convertidos implicitamente em inteiros), desde que cada argumento esteja dentro de seu intervalo apropriado.
SELECT make_date('2020', '07', '25');

Resultado:
2020-07-25

Novamente podemos usar pg_type() para verificar se o resultado é de fato uma data tipo de dados.
SELECT pg_typeof(make_date('2020', '07', '25'));

Resultado:
date

No entanto, você ainda precisa garantir que cada argumento seja válido uma vez convertido em um inteiro, caso contrário, você receberá um erro como o seguinte.
SELECT make_date(2020, 'July', 25);

Resultado:
ERROR: invalid input syntax for type integer: "July"
LINE 1: SELECT make_date(2020, 'July', 25);