Ao trabalhar com o intervalo tipo de dados no PostgreSQL, você pode alterar a forma como a saída do intervalo é formatada.
Você pode escolher entre quatro formatos nos quais seus intervalos podem ser reproduzidos.
O formato de saída do tipo de intervalo pode ser definido para um dos seguintes estilos:
sql_standard
postgres
postgres_verbose
iso_8601
O estilo padrão é
postgres
. Para alterar o formato do intervalo, use o
SET intervalstyle
comando. Exemplos
Os exemplos a seguir demonstram a saída de
make_interval()
ao usar os diferentes estilos de saída. sql_standard
Esse estilo está em conformidade com a especificação do padrão SQL para strings literais de intervalo, se o valor do intervalo atender às restrições do padrão (somente ano-mês ou apenas dia, sem mistura de componentes positivos e negativos).
Caso contrário, a saída se parece com uma string literal padrão ano-mês seguida por uma string literal de dia, com sinais explícitos adicionados para desambiguar intervalos de sinais mistos.
Aqui está um exemplo usando o ano-mês.
SET intervalstyle = 'sql_standard';
SELECT make_interval(years => 1, months => 2);
Resultado:
1-2
Abaixo está outro exemplo. Desta vez eu especifico anos, meses, semanas, dias, horas, minutos e segundos.
SET intervalstyle = 'sql_standard';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Resultado:
+1-2 +25 +5:06:07
postgres
postgress
é a configuração padrão. Este estilo corresponde à saída de versões do Postgres anteriores a 8.4 quando o
DateStyle
parâmetro foi definido como ISO
. SET intervalstyle = 'postgres';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Resultado:
1 year 2 mons 25 days 05:06:07
postgres_verbose
Este estilo corresponde à saída de versões do Postgres anteriores a 8.4 quando o
DateStyle
parâmetro foi definido como não-ISO
saída. SET intervalstyle = 'postgres_verbose';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Resultado:
@ 1 year 2 mons 25 days 5 hours 6 mins 7 secs
iso_8601
Este estilo corresponde ao “formato com designadores” descrito na seção 4.4.3.2 do padrão ISO 8601.
SET intervalstyle = 'iso_8601';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Resultado:
P1Y2M25DT5H6M7S