PostgreSQL

Postgresql Generate_Series para crear una serie de fechas

Postgresql Generate_Series para crear una serie de fechas

Debe estar familiarizado con la entrada de datos en cualquier sistema de gestión de bases de datos. Al ingresar datos, es posible que no tenga tiempo y deba ignorar las lagunas en sus datos o desear una serie consistente de registros. En esta situación, PostgreSQL generate_series es aplicable para lograr el objetivo requerido. Como su nombre lo indica, el mecanismo de esta función contiene 2 o 3 entradas. I.mi., generate_series le permite generar una secuencia de registros con un punto de inicio, un punto de terminación y un valor creciente (opcional). Funciona principalmente con dos tipos de datos. I.mi., Enteros y marcas de tiempo. Para crear una secuencia de fechas, la función generate_series se utiliza de diferentes formas.

Sintaxis:

>> Generate_series ([inicio], [parada], [opcional paso / intervalo]);

La descripción de la sintaxis de la consulta es la siguiente:

Tengamos una idea de cómo puede funcionar la función generate_series (). A continuación se muestran algunos ejemplos elementales. Para comprender el concepto de esta función, necesitamos instalar y abrir el shell de línea de comandos de postgreSQL (psql).

Después de una configuración exitosa y mientras proporcionamos localhost, nombre de la base de datos, número de puerto y contraseña, podemos realizar cualquier consulta en psql.

Ejemplo 01: Generate_series usando DATE más el operador entero

La siguiente consulta contiene una función incorporada "FECHA" para obtener la fecha actual. Considerando que "a" es el operador proporcionado. La función de este operador es agregar ese número particular (intervalo) en la parte del día de la fecha. O en otras palabras, con intervalos específicos, los días se cambian y se muestran en la fecha. En la salida, el intervalo "9" se agregará cada día, i.mi., 9 + 9 = 18, luego 27, y así sucesivamente, hasta alcanzar la suma de 40.

>> SELECCIONAR FECHA_ ACTUAL + s.a AS data FROM Generate_series (0,40,9) AS s (a);

Ejemplo 02: uso de la fecha actual para generar series de fechas

Para generar series de fechas con la ayuda de la fecha actual, estamos utilizando la función ahora (), que toma la fecha actual automáticamente del sistema. Puede ver que la salida correspondiente muestra la fecha hasta 4 días. Esto se debe a que hemos limitado la ejecución agregando 4 días a la fecha actual. Como hemos proporcionado el tiempo de intervalo a 1 día, cada fecha se incrementará con 1 adición en el día

>> seleccione * de generate_series (ahora (), ahora () + '4 días', '1 día');

Ejemplo 03: generación de series de fechas con marcas de tiempo

Marcas de tiempo de las horas: Esta función también usa el tipo de datos de las marcas de tiempo. La marca de tiempo es básicamente una secuencia de caracteres que proporcionan la hora y la fecha de un día relacionado. La función correspondiente facilita al usuario proporcionar fechas entre las dos fechas que usamos para anticipar en la consulta. Se obtiene la lista de marcas de tiempo de la fecha 7 a la 11 con una marca de tiempo cada 5 horas.

>> seleccione * de generate_series ('2021-3-7 00:00' :: marca de tiempo, '2021-3-11 12:00', '5 horas');

La consulta, como se mencionó anteriormente, también se usa para agregar minutos y segundos con horas para adquirir una mejor marca de tiempo entre los días de la marca de tiempo relevante.

Marcas de tiempo de los días: En el ejemplo de excedente, hemos visto que la marca de tiempo se usa para mostrar fechas entre las dos fechas respectivas que hemos proporcionado con la alteración en horas incrementada en 5. En el ejemplo actual, veremos la marca de tiempo en días. Los días se incrementan con 2 ya que hemos iniciado una brecha de 2 días en la producción particular.

>> seleccione * de generate_series ('2021-03-01' :: timestamptz, '2021-03-19' :: timestamptz, '2 días');

Ejemplo 04: Generación de fechas específicas del mes usando date_trunc

Primer dia del mes

Si queremos generar la primera fecha del mes actual usaremos la consulta adjunta a continuación.La función distinta que se utiliza aquí es date_trunc, que trunca la fecha a la precisión dada.I.mi. ahora()

>> seleccione date_trunc ('mes', ahora ());

      Ultimo dia del mes

El mismo enfoque date_trunc generará el último día del mes.

>> seleccione date_trunc ('mes', ahora ()) + '1 mes' :: intervalo - '1 día' :: intervalo como fin_de_month;

Mediados de mes

La mitad del mes se obtiene modificando en la consulta anterior. Utilizaremos la función media para obtener el objetivo respectivo. O restaremos 17 días del último.

>> seleccione date_trunc ('mes', ahora ()) + '1 mes' :: intervalo - '17 días ':: intervalo como mid_of_month;

Ejemplo 05: generación de fechas utilizando datos relacionados con el calendario

Aquí viene el ejemplo del uso de datos de calendario. Llegaremos a conocer el año bisiesto, yo.mi., días totales en el mes de febrero."T" denota verdadero significa que el año es un año bisiesto, y para "f", es falso "dow" representa los días de la semana. La columna "Febrero" contiene el total de días del mes. "Día" denota el primer día de enero de cada año. Según la investigación, las semanas de ISO comienzan a partir del lunes y la primera semana de un año contiene el 5 de enero del año.

>> seleccionar fecha :: fecha, extraer ('isodow' de fecha) como dow, to_char (fecha, 'dy') como día, extraer ('año iso' desde fecha) como "año iso", extraer ('semana' desde la fecha) como semana, extraer ('día' de (fecha + intervalo '2 meses - 1 día')) como febrero, extraer ('año' desde la fecha) como año, extraer ('día' de (fecha + intervalo ' 2 mes - 1 día ')) = 29 como salto de generate_series (fecha' 2010-01-01 ', fecha' 2020-03-01 ', intervalo' 1 año ') como t (fecha);

Isodow es el día de la semana estándar "ISO". La consulta se ejecutará de 2010 a 2020 mientras se manipula cada mes, semana y día del año.

Ejemplo 06: Generación de series de fechas y números de días específicos de la semana

En esta consulta, adquiriremos fechas y números de días filtrando días en una semana. Consideraremos numéricamente los días de la semana. Por ejemplo, comenzando de 0 a 6. Donde 0 es domingo y 6 es sábado. En esta consulta, verá que hemos aplicado una condición para traer fechas y números de días que no están en 2 y 5. Por ejemplo, el 20 de febrero era sábado, por lo que el número que apareció es 6.

>> con días como (seleccione dd, extraiga (DOW de dd) dw de generate_series ('2021-02-20' :: fecha, '2021-03-05' :: fecha, '1 día' :: intervalo) dd ) seleccione * de los días en los que dw no está en (2,5);

Conclusión

El artículo, como se mencionó anteriormente, cubre la mayoría de las funcionalidades básicas relacionadas con la generación de series para crear series de fechas. Los ejemplos detallados discutidos en todos los aspectos son tan significativos que aumentarán el conocimiento de su artículo respectivo.

El botón de clic izquierdo del mouse no funciona en Windows 10
Si está utilizando un mouse dedicado con su computadora portátil o computadora de escritorio, pero el el botón izquierdo del mouse no funciona en Wind...
El cursor salta o se mueve aleatoriamente mientras escribe en Windows 10
Si descubre que el cursor del mouse salta o se mueve por sí solo, automáticamente, de manera aleatoria mientras escribe en una computadora portátil o ...
Cómo invertir la dirección de desplazamiento del mouse y los paneles táctiles en Windows 10
Ratón y Panel táctils no solo facilitan la informática, sino que también hacen que sea más eficiente y requieran menos tiempo. No podemos imaginar una...