sql >> Base de Datos >  >> RDS >> PostgreSQL

Comprender los tipos y funciones de fecha de PostgreSQL (por ejemplos)

En este artículo, analizaremos cómo trabajar con fechas en PostgreSQL, incluidos los diversos tipos y formatos de datos de fecha, sus funciones y las formas de manejarlos en su rutina diaria. Usaremos dbForge Studio para PostgreSQL para ilustrar los ejemplos.

Puede usar fechas y marcas de tiempo para el análisis y el almacenamiento de datos, ya que le permiten determinar cuándo ocurrió realmente un evento. Lo complicado de las fechas es que sus formatos varían en diferentes países, por lo que puede ser una tarea bastante desafiante para los principiantes en la gestión de bases de datos. El tipo de datos y el formato de la columna de fecha siempre deben ser consistentes con la información ingresada por el usuario. Además, debe modificar el formato de la fecha para satisfacer las preferencias de sus usuarios. Postgres es capaz de manejar una amplia gama de formatos de datos.

Contenido

  • Descripción general del tipo de datos DATE de PostgreSQL
  • Uso de la fecha actual como valor predeterminado
  • Funciones DATE de Postgres
  • Uso de la función NOW() para obtener la fecha actual
  • Uso de la función TO_CHAR():muestra el valor de la fecha en un formato específico
  • Uso del operador menos para obtener el intervalo entre dos fechas
  • Uso de la función AGE() para obtener la diferencia de fechas en años, meses y días
  • Uso de la función EXTRACT() para obtener el año, trimestre, mes, semana, día a partir de un valor de fecha
  • Uso de TO_TIMESTAMP() para convertir una cadena en una marca de tiempo
  • Resumen

Descripción general del tipo de datos DATE de PostgreSQL

DATE El tipo de datos en PostgreSQL se usa para almacenar fechas en el formato AAAA-MM-DD (por ejemplo, 2022-03-24). Necesita 4 bytes para almacenar un valor de fecha en una columna. Tenga en cuenta que la fecha más temprana posible es 4713 a. C. y la última fecha posible es 5874897 d. C.

Es muy importante conservar la legibilidad del código en la etapa de escribirlo. dbForge Studio para PostgreSQL puede presumir de un práctico e intuitivo formateador de PostgreSQL. Al encargarse del formato del código, la verificación de la sintaxis y la finalización del código, la función de formateador de SQL de Postgres integrada dbForge Studio para PostgreSQL también le permitirá concentrarse en el manejo del tipo de datos DATE.

Uso de la fecha actual como valor predeterminado

El valor predeterminado en un DATE La columna en una base de datos de Postgres se puede configurar usando la palabra clave DEFAULT CURRENT DATE , como en el siguiente script:

CREATE TABLE myevents (
event_id serial PRIMARY KEY,
event_details VARCHAR (255) NOT NULL,
event_date DATE NOT NULL DEFAULT CURRENT_DATE
);
INSERT INTO myevents (event_details)
VALUES('Meeting the client ABC');
 
SELECT * FROM myevents;

Como puede ver, un valor para el [fecha del evento] El servidor PostgreSQL inserta automáticamente la columna, utilizando la fecha actual del sistema en el formato AAAA-MM-DD.

Funciones de FECHA de Postgres

A veces, es fundamental modificar el formato de fecha o calcular los valores en la tabla de PostgreSQL. Es posible que tengamos que hacer esto para los usuarios de diferentes zonas horarias de todo el mundo. En este caso, las Funciones SQL son cruciales.

Uso de la función AHORA() para obtener la fecha actual

SELECT now();

Puede usar dos puntos dobles (::) para emitir un DATETIME valor a una DATE valor como se muestra a continuación:

La marca de tiempo actual del sistema es devuelta por NOW() función. La sintaxis es la siguiente:

SELECT now()::date;

Uso de la función TO_CHAR():muestra el valor de la fecha en un formato específico

Para presentar la salida de un valor de fecha de Postgres en un formato específico, TO_CHAR() La función viene muy bien. La sintaxis es la siguiente:

TO_CHAR(expression, format)

Hay dos parámetros aceptados por TO_CHAR() función:

  • Ingrese la fecha :La fecha que se convertirá a un formato específico.
  • Formato de fecha :El marcador de posición para una nueva especificación de formato de fecha.

Veamos cómo convertir los valores de fecha existentes de [MyEvents] tabla en formato DD-MM-AAAA.

SELECT event_details,event_date as ExistingDateformat,
to_char(event_date,'DD-MM-YYYY') As NewDateFormat FROM myevents;

Para convertir la marca de tiempo actual al formato preferido, puede fusionar TO_CHAR() y el NOW() funciones.

SELECT TO_CHAR(NOW() :: DATE, 'dd-mm-yyyy');

Uso del operador menos para obtener el intervalo entre dos fechas

Para calcular la diferencia entre dos fechas, utilice el operador menos (-). La consulta a continuación proporciona el período de tiempo entre la marca de tiempo actual y [eventdate] desde Mis Eventos mesa.

SELECT event_date,now() as currentdate,
now()-event_date as Interval FROM myevents
where event_id=2;

También puede seleccionar un intervalo para que se devuelva la fecha cuando haya pasado una cierta cantidad de tiempo. Echa un vistazo a la consulta a continuación:

SELECT (NOW() + interval '3 hour') AS threehourslater,
(NOW() + interval '2 day') AS Twodaylater,
(NOW() - interval '2 year') AS TwoYearBefore,
(event_date- interval '1 year') as eventdatedifference
from myevents;

Uso de la función AGE() para obtener la diferencia de fechas en años, meses y días

Con AGE() función, puede obtener la diferencia de fecha en años, meses y días. Esta función se puede utilizar para determinar la edad de una persona. El primer valor de fecha se resta del segundo valor de fecha con esta función, que acepta dos entradas de fecha. Cuando se invierten los valores en el script de función, el resultado es un valor negativo.

Averigüemos la edad de la persona cuya fecha de nacimiento es 1995-10-09. La sintaxis es la siguiente:

SELECT current_date,
AGE(timestamp '1995-10-09'::timestamp) as EmpAge;

Uso de la función EXTRACT() para obtener el año, trimestre, mes, semana, día a partir de un valor de fecha

El EXTRACT() la función devuelve un día, una semana, un mes, un año y un trimestre a partir del valor de fecha especificado.

Extraer un año:

SELECT EXTRACT(YEAR FROM TIMESTAMP '2022-04-09 10:30:15') as year;

Extraer un mes:

SELECT EXTRACT(Month FROM TIMESTAMP '2022-04-09 10:30:15') as Month;

Extraer un cuarto:

SELECT EXTRACT(QUARTER FROM TIMESTAMP '2022-04-09 10:30:15') as QUARTER;

Extraiga el día de la semana:

SELECT EXTRACT(DOW FROM TIMESTAMP '2022-04-09 10:30:15') as DOW;

Extraiga el día del año:

SELECT EXTRACT(DOY FROM TIMESTAMP '2022-04-09 10:30:15') as DOY;

Tenga en cuenta que dbForge Studio muestra los resultados de la ejecución de la consulta en una pestaña separada.

El EXTRACT() La función se puede combinar fácilmente con INTERVAL . Supongamos que queremos establecer el intervalo en 5 años 8 meses 23 días 08 horas 10 minutos y 20 segundos. Los valores individuales son devueltos por EXTRACT función.

SELECT EXTRACT(YEAR
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Month
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Day
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(hour
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Minute
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' );

Uso de TO_TIMESTAMP() para convertir una cadena en una marca de tiempo

Puede mantener los valores de fecha en UTC (coordinador de tiempo universal) y cambiar la zona horaria según sea necesario si desea convertir la marca de tiempo en una zona horaria diferente.

SELECT * FROM pg_timezone_names;

Para verificar la zona horaria actual, use el SHOW TIMEZONE comando.

Puedes usar AT TIME ZONE para recibir la salida para la zona horaria elegida seleccionando el valor de zona horaria necesario de pg_timezone_names mesa.

SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Los_Angeles';

AT TIME ZONE le permite tener varias salidas de zona horaria.

SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Washington';
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'Asia/Beijing';
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'Europe/Kyiv';

Resumen

En resumen, el DATE de PostgreSQL El tipo de datos es muy importante y útil cuando se almacenan fechas y marcas de tiempo en tablas, por lo que es bastante común en una base de datos relacional. El rango de su uso es increíblemente amplio, por eso es tan importante dejarlos claros para cualquier usuario en cualquier país y zona horaria. Con varias funciones de Postgres, es fácil satisfacer las necesidades de los usuarios, ya que puede modificar las fechas para que puedan usarse en una zona horaria específica, con un formato determinado y otros detalles que hacen mucho más fácil trabajar con dichos datos. Finalmente, si está buscando una combinación perfecta de una interfaz gráfica intuitiva y una línea de comando aumentada que pueda hacer que funcione con DATE tipo de datos aún más agradable, dbForge Studio para PostgreSQL será útil.