logo

Intervalo de PostgreSQL

En esta sección, vamos a entender el funcionamiento del Tipo de datos de intervalo de PostgreSQL, y también vemos ejemplos del Tipo de datos de intervalo. Y el intervalo más utilizado funciones , Por ejemplo, AHORA(), TO_CHAR(), EXTRACT(), justificar_días(), justificar_horas(), justificar_intervalo(). El Entrada y salida formato para valores de intervalo de PostgreSQL.

¿Qué es el tipo de datos de intervalo de PostgreSQL?

En PostgreSQL, el Intervalo es otro tipo de tipo de datos utilizado para almacenar e implementar el tiempo en años, meses, días, horas, minutos, segundos, etc. Y el meses y dias los valores son valores enteros , mientras que el campo de segundo puede ser el valores de fracciones.

El valor del tipo de datos del intervalo PostgreSQL implica Almacenamiento de 16 bytes tamaño, que ayuda a almacenar un período con el rango aceptable de - 178000000 años a 178000000 años.

incluir programación c

Nota: El número de dígitos de fracción tomados en el segundo campo se conoce como precisión p.

Sintaxis del tipo de datos de intervalo de PostgreSQL

La sintaxis del tipo de datos Intervalo de PostgreSQL es la siguiente:

 @ interval [ fields ] [ (p) ] 

En la sintaxis anterior, tenemos los siguientes parámetros:

Parámetro Descripción
campos El parámetro de campo se utiliza para mostrar la hora.
pag P se utiliza para mostrar el valor de precisión.
@ Podemos ignorar el parámetro @ ya que es un parámetro opcional.

Veamos un ejemplo de muestra para comprender mejor cómo podemos escribir los valores de intervalo. con @ parámetro y sin @ parámetro :

 @interval '6 months before'; @interval '2 hours 30 minutes'; 

O

 interval '6 months before'; interval '2 hours 30 minutes'; 

Nota: Podemos utilizar ambas declaraciones anteriores ya que se corresponden entre sí. Además, un valor de intervalo puede tener un valor de precisión electivo p con el rango permitido que comienza de 0 a 6.

Ejemplo de tipo de datos de intervalo de PostgreSQL

Veamos un ejemplo de ejemplo para entender cómo Tipo de datos de intervalo de PostgreSQL obras.

En el siguiente ejemplo, intentaremos encontrar el tiempo de 2 horas 30 minutos antes, en el tiempo actual del año pasado ; usaremos los siguientes comandos:

 SELECT now(), now() - INTERVAL '6 months 2 hours 30 minutes' AS '2 hours 30 minutes before last year'; 

Producción

Después de ejecutar el comando anterior, obtendremos el siguiente resultado, que muestra 2 horas 30 minutos antes del año pasado :

Intervalo de PostgreSQL

Hemos visto el ejemplo principal del tipo de datos de intervalo y entendemos su funcionamiento. Ahora veremos el formato de entrada y salida de valores de intervalo.

En primer lugar, entenderemos la Valor de intervalo de PostgreSQL para el formato de entrada :

Formato de entrada de intervalo de PostgreSQL

En PostgreSQL, tenemos lo siguiente sintaxis detallada, lo que nos ayuda a escribir los valores del intervalo:

 quantity unit [quantity unit...] [direction] 

Tenemos los siguientes parámetros, que se utilizan en la sintaxis anterior:

Parámetro Descripción
cantidad A cantidad es un número, que también acepta signos como + o -
unidad El unidad puede ser cualquiera milenio, siglo, década, año, mes, semana, día, hora, minuto, segundo, milisegundo, microsegundo, o abreviatura puede ser la siguiente y, m, d, etc. y las formas plurales pueden ser las meses, dias , etc.
dirección El dirección El parámetro puede ser hace o la cadena vacía.

Nota: La sintaxis anterior también se utiliza para el formato de salida de intervalo y se conoce como postgres_verbose.

En el siguiente ejemplo, mostraremos algunos valores de intervalo donde usamos el sintaxis detallada :

 INTERVAL '1 year 5 months 5 days'; INTERVAL '1 weeks ago'; 

El formato de intervalo ISO 8601

Además de la sintaxis detallada anterior, para escribir los valores de intervalo con la ayuda de ISO 8601-tiempo intervalos, PostgreSQL nos proporciona las dos formas, que son las siguientes:

    Formato de designadores Formato alternativo

El formato de designadores para ISO 8601 es el siguiente:

 P quantity unit [ quantity unit ...] [ T [ quantity unit ...]] 

En el formato anterior, el valor del intervalo esencial comienza con el letra p , y el letra T se utiliza para definir el unidad de hora del día .

La siguiente tabla muestra la Intervalo ISO 8601 abreviaturas de unidades:

Abreviatura Descripción
Y Años
METRO Meses (para la parte de fecha)
EN Semanas
D Días
h Horas
METRO Minutos (para la parte del tiempo)
S Segundos

Nota: La M puede ser meses o minutos dependiendo de si aparece antes o después de la letra T.

Veamos un ejemplo de Designadores ISO 8601 formato para nuestra mejor comprensión:

El Formato de designadores ISO 8601 se puede escribir para el intervalo de 5 años 4 meses 3 días 2 horas 1 minutos 1 segundo :

 P5Y4M3DT2H1M1S 

Y la forma alternativa de ISO 8601 es como se muestra a continuación:

 P [ years-months-days ] [ T hours:minutes:seconds ] 

Y también comienza con el la letra P y la letra T, que divide el hora y fecha partes del valor del intervalo.

Por ejemplo, el Forma alternativa ISO 8601 se puede escribir para 5 años 4 meses 3 días 2 horas 1 minuto 1 segundo, Como se muestra abajo:

 P0005-04-03T02:01:01 

Formato de salida de intervalo de PostgreSQL

El formato de salida de intervalo de PostgreSQL de los valores de intervalo se puede configurar con la ayuda de COLOCAR estilo de intervalo comando, como podemos ver en el siguiente ejemplo:

 SET intervalstyle = 'iso_8601'; 

PostgreSQL contiene cuatro formatos de salida diferentes, como por ejemplo:

    iso_8601 postgres_verbose Postgres estándar sql

Nota: Para formatear los valores de intervalo, PostgreSQL usa el estilo Postgres de forma predeterminada.

Veamos un ejemplo de nuestra mejor comprensión:

El siguiente comando se utiliza para mostrar el 5 años 4 meses 3 días 2 horas 1 minuto 1 segundo en los cuatro formatos de salida diferentes:

Para formato de salida ISO_8601

En el siguiente comando, lo haremos COLOCAR el estilo de intervalo como iso_8601 para el valor de intervalo mencionado anteriormente:

 SET intervalstyle = 'iso_8601'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minute 1 second'; 

Producción

Después de ejecutar el comando anterior, obtendremos el siguiente resultado, que representa el iso_8601 formato de salida de intervalo:

Intervalo de PostgreSQL

Para formato de salida postgres_verbose

En el siguiente comando, lo haremos COLOCAR el estilo de intervalo como postgres_verbose para el valor del intervalo mencionado anteriormente:

 SET intervalstyle = 'postgres_verbose'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second'; 

Producción

Obtendremos el siguiente resultado después de implementar el comando anterior, que muestra el postgres_verbose formato de salida de intervalo:

orden sql al azar
Intervalo de PostgreSQL

Para formato de salida de Postgres

En el siguiente comando, lo haremos COLOCAR el estilo de intervalo como Postgres para el valor del intervalo mencionado anteriormente:

 SET intervalstyle = 'postgres'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second'; 

Producción

Obtendremos el siguiente resultado después de ejecutar con éxito el comando anterior, que muestra el Postgres formato de salida de intervalo:

Intervalo de PostgreSQL

Para formato de salida Sql_standard

En el siguiente comando, lo haremos COLOCAR el estilo de intervalo como sql_estándar para el valor del intervalo mencionado anteriormente:

 SET intervalstyle = 'sql_standard'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second'; 

Producción

Obtendremos el siguiente resultado después de ejecutar con éxito el comando anterior, que representa el sql_estándar formato de salida de intervalo:

Intervalo de PostgreSQL

Modificando el intervalo de PostgreSQL a cadena

Podemos usar el TO_CHAR() función para modificar un valor de intervalo a una cadena.

La sintaxis para modificar el intervalo de PostgreSQL a cadena

 TO_CHAR(interval,format) 

El Función TO_CHAR() toma el primera declaración como un valor de intervalo y otro como el formato y recupera una cadena, mostrando el intervalo en el formato particular.

En el siguiente ejemplo, usaremos la función TO_CHAR(), que convierte el intervalo de PostgreSQL en el valor de cadena:

 SELECT TO_CHAR( INTERVAL '15h 15m 15s','HH24:MI:SS' ); 

Producción

Después de ejecutar con éxito el comando anterior, obtendremos el siguiente resultado:

Intervalo de PostgreSQL

Operadores y funciones relacionados con el intervalo de PostgreSQL

Operadores de intervalo

Podemos usar lo siguiente +, -, *, etc. operador aritmético para obtener los valores del intervalo.

Veamos el siguiente ejemplo para nuestra mejor comprensión:

En el siguiente comando, usaremos el operador aritmético (+) con la ayuda del tipo de datos de intervalo de PostgreSQL:

 SELECT INTERVAL '1h 50m' + INTERVAL '5m'; 

Producción

Obtendremos el siguiente resultado al implementar el comando anterior, como se muestra a continuación:

Intervalo de PostgreSQL

En el siguiente comando, usaremos el operador aritmético (-) con la ayuda del tipo de datos de intervalo de PostgreSQL:

 SELECT INTERVAL '3h 50m' - INTERVAL '30m'; 

Producción

Al implementar el comando anterior, obtendremos el siguiente resultado:

Intervalo de PostgreSQL

En el siguiente comando, usaremos el operador aritmético (*) con la ayuda del tipo de datos de intervalo de PostgreSQL:

 SELECT 400 * INTERVAL '5 minute'; 

Producción

Al implementar el comando anterior, obtendremos el siguiente resultado:

Intervalo de PostgreSQL

Extraer datos de un intervalo de PostgreSQL

Podemos usar el EXTRACTO() función para extraer los campos de un valor de intervalo, por ejemplo, año, mes, fecha, etc. .

La sintaxis para extraer datos de un intervalo de PostgreSQL

 EXTRACT(field FROM interval) 

En la sintaxis anterior, podemos usar el año, mes, fecha, hora, minutos , etc., en el parámetro de campo.

El extracto La función devuelve un valor de tipo doble precisión si queremos extraerlo del intervalo.

En el siguiente ejemplo, usaremos el EXTRACTO() función para recuperar el valor de doble precisión.

 SELECT EXTRACT (MINUTE FROM INTERVAL '2 hours 30 minutes' ); 

Producción

Después de ejecutar con éxito el comando anterior, obtendremos el siguiente resultado, que muestra el parte de fecha para la doble precisión valores como se muestra a continuación:

Intervalo de PostgreSQL

Ajustar los valores de intervalo de PostgreSQL

Tenemos dos funciones, justificar_días y justificar_horas en PostgreSQL, lo que nos permite modificar el intervalo de 24 horas considerar como un día y el intervalo de 30 días considerar como un mes .

Veamos un ejemplo para entender cómo estamos ajustando los valores de intervalo de PostgreSQL:

En el siguiente comando, usaremos el Función justify_days y justify_hours:

 SELECT justify_days(INTERVAL '30 days'), justify_hours(INTERVAL '24 hours'); 

Producción

emitir sql

Después de ejecutar el comando anterior, obtendremos el siguiente resultado, que muestra el intervalo de 30 días como un mes y el intervalo de 24 horas como un día :

Intervalo de PostgreSQL

Además de eso, el justificar_intervalo La función regula los valores del intervalo con la ayuda de justificar_días y justificar_horas con modificaciones de signos adicionales:

En el siguiente ejemplo, usaremos la función justifiy_interval con el comando SELECT:

 SELECT justify_interval(interval '6 months -1 hour'); 

Producción

Obtendremos el siguiente resultado después de implementar el comando anterior:

Intervalo de PostgreSQL

Descripción general

En el Tipo de datos de intervalo de PostgreSQL sección, hemos aprendido los siguientes temas:

  • El Datos de intervalo de PostgreSQL El tipo se utiliza para almacenar e implementar un período en años, meses, días, horas, minutos, segundos.
  • Usamos diferentes Funciones de intervalo , Por ejemplo, AHORA(), TO_CHAR(), para mejorar los valores de intervalo de la tabla particular.
  • Los valores de intervalo de PostgreSQL tienen ambos entrada y salida formato de intervalo.
  • Podemos ajustar los valores de intervalo de PostgreSQL con la ayuda de Funciones justify_days(), justify_hours, justify_interval().
  • Podemos usar el EXTRACTO() función para extraer los valores del campo de intervalo.