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);