Saltar al contenido

Convertir fecha con formato en Postgresql

Convertir una fecha con formato especifico puede ser una de las tareas mas comunes que encontremos dentro de nuestro dia a dia, ademas de las consultas comunes de select , update, delete e insert. Todo administrador necesitara colaborar con dar formato de fecha a un reporte en postgresql.

Por lo cual podria funcionarte esta guia para ayudarte en este trabajo, ademas te dejo algunos links que pueden ser utiles para sql server y mysql. Ten a la mano los formatos mas comunes para convertir fechas.

Índice

    Entradas recomendadas

    Para estos ejemplos te recomiendo instalar Pgadmin pero igualmente existen otros GUI muy recomendados para trabajar con postgresql que puede ser muy utiles.

    Sintaxis funciones de formato fecha en postgresql

    Para converitir fechas en postgresql contamos con un conjunto de funciones distintas pero que pueden ser de mucha utilidad conoceras estas estan hechas para permitirle al DBA seleccionar entre extraer informacion y dar fomarto a los campos tipo fechas.

    Las tres funiones que se encargan de esto son:

    • TO_CHAR() :Para esta funcion utilizamos argumentos especificos para dar formato a una columna tipo fecha en postgresql

    Sintaxis de la funcion TO_CHAR()

    • Select To_char(valor tipo fecha,formato)

    utiliza un campo tipo fecha y espcificar el formato indicado.

    • DatePart(): Esta funcion solo permite extrar un valor dentro de una columna fecha esto lo veremos en el ejemplo 8

    Sintaxis general Datepart

    date_part (‘argumento’, fecha)

    Recibe un argumento que indica que valor deseas extaer de la fecha esto puede ir desde el dia hasta los segundos que indica la fecha.

    • Extract() :Literalmente extrae información de un campo tipo fecha y hora o tipo hora muy parecida al la fucnion Date part.

    Sintaxis de extract()

    Extract(‘argumento’ FROM ‘fecha’);

    Su función es la misma que la de datepart la diferencia es que utiliza FROM luego del argumento.

    Funcion To_CHAR para convertir fechas en postgresql

    Este generado de sintaxis para formatear fechas en postgresql, te permite copiar y pegar el comando que necesitas para convertir tu fecha en postgresql te recomiendo cambiar la fecha por el campo de tu tabla.

    Este generador de sintaxis permitira solo copiar el comando y probarlo en el pgadmin, si necesitas mas formatos te recomiendo ver articulo hasta el final.

    Ejemplos prácticos de uso de la función TO_CHAR

    Ahora, vamos a ver algunos ejemplos de uso de la función TO_CHAR().

    Ejemplo #01 –sql fecha formato YYYY/MM/DD con la funcion to_date

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: sql fecha formato dd/mm/yyyy

    SELECT TO_CHAR (NOW ():: DATE, ‘dd-mm-aaaa’);

    Ejemplo #02 – Convertir Fecha en formato mm-dd-yyyy

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: mm-dd-yyyy.

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

    Ejemplo #03 – Convertir DateTime en formato mm/dd/yy

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: mm-dd-yy

    SELECT TO_CHAR (NOW ():: DATE, ‘ mm/dd/yy’);

    Ejemplo #04 – Extraer la hora de una fecha en postgresql HH:MM:tt

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: HH12:MI:SS.

    SELECT
    to_char(timestamp '2002-04-20 17:31:12.66', 'HH12:MI:SS')
     → 05:31:12

    Ejemplo #05 – Convertir fecha en formato DD MON yy

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: HH:mm tt.

    «`

    SELECT TO_CHAR (NOW ():: DATE, ‘dd mm YY’);

    «`

    Ejemplo #06 – Convertir DateTime en formato HH:mm:ss.fff tt

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: HH:mm:ss.fff tt.

    «`

    SELECT TO_CHAR (NOW ():: DATE, ‘dd-mm-aaaa’);

    «`

    La función de extract en PostgreSQL para fechas

    Es posible que necesites solo extraer la fecha de un campos tipo datetime el cual solo guarda la fecha y la hora dentro del mismo para esto solo necesitaras ejecutar la siguiente funcion:

    • Obtener el año de una fecha:
      SELECT extract(year FROM ‘2022-01-01’);
    • Obtener el mes de una fecha:
      SELECT extract(month FROM ‘2022-01-01’);
    • Obtener el día de la semana de una fecha:
      SELECT extract(dow FROM ‘2022-01-01’);
    • Obtener el número de horas desde el comienzo de la fecha:
      SELECT extract(hour FROM ‘2022-01-01 12:30:00’);
    • Obtener el número de segundos desde el comienzo de la fecha:
      SELECT extract(seconds FROM ‘2022-01-01 12:30:45’);

    Como puedes ver, la sintaxis de extract es similar a la de date_part, pero usa la palabra clave FROM para especificar la fecha desde la que se extraerán los componentes.

    En esta consulta de ejemplo, extrae el mes de la marca del campo fecha y hora especificado. Por lo cual, hemos pasado usar «month» como argumento a la función «Extraer» seguida de la La palabra clave «TIMESTAMP».

    Función Date_Part en PostgreSQL:

    Los ejemplos mas comunes en los que podemos usar la funcion Date_part serian :

    • Extraer solo el año de una fecha indicada:
      SELECT date_part(‘year’, ‘2022-01-01’);
    • Obtener el mes de una fecha:
      SELECT date_part(‘month’, ‘2022-01-01’);
    • seleccionar el día de la semana de una fecha:
      SELECT date_part(‘dow’, ‘2022-01-01’);
    • Obtener el número de horas desde el comienzo de la fecha:
      SELECT date_part(‘hour’, ‘2022-01-01 12:30:00’);
    • Conseguir el número de segundos desde el comienzo de la fecha:
      SELECT date_part(‘seconds’, ‘2022-01-01 12:30:45’);

    La función «Date_Part» de PostgreSQL puede combinarser en una misma consulta también se puede usar para obtener de una columna fecha el día, mes y año, es decir, paa esto deberiamos usar los siguientes comandos

    # SELECT date_part (‘Day’, TIMESTAMP ‘2021-09-13 12:30:10’) d,

    date_part (‘month’, TIMESTAMP ‘2021-09-13 12:30:10’) m,

    date_part (‘year’, TIMESTAMP’ 2021-09-13 12:30:10 ‘) y;

    «`

    En este ultimo ejemplo ejecutamos la consulta que nos estaria genernado 3 columnas ocn los valores de mes dia y año.

    Extract o Date_part, cual deberia utilizar?

    No existe una respuesta universalmente aceptada a cuál es mejor entre extract y date_part. Ambas funciones tienen el mismo propósito y ofrecen resultados similares. La elección depende de tus preferencias personales y de la consistencia de tu código.

    Sin embargo, es posible que algunos desarrolladores prefieran extract debido a su sintaxis más legible y explícita, ya que utiliza la palabra clave FROM para especificar la fecha desde la que se extraerán los componentes. Por otro lado, algunos desarrolladores pueden preferir date_part por su sintaxis más concisa y directa.

    En última instancia, la elección depende de tus preferencias y de la consistencia de tu código. Lo más importante es elegir una función y ser consistente en su uso.

    La funcion make_date de Postgresql, cuando y como usarla ?

    La función make_date se utiliza para crear una fecha a partir de componentes individuales, como el año, el mes y el día. Esto puede ser útil cuando tienes estos componentes en un formato separado y deseas combinarlos para obtener una fecha completa. Por ejemplo, si tienes una tabla con columnas para el año, el mes y el día, puedes utilizar make_date para crear una fecha a partir de estos valores:

    SELECT make_date(year_column, month_column, day_column)
    FROM my_table;
    

    Esto te permitirá trabajar con fechas completas en lugar de tres columnas separadas. Además, te permite realizar operaciones de fecha y hora más complejas y eficientes.

    Como usar make_date con Date_part ?

    La función date_part en sí misma no permite formar una fecha completa, ya que solo devuelve una parte específica de una fecha. Sin embargo, puedes combinar varias llamadas a date_part con la función make_date para formar una fecha completa. Por ejemplo:

    SELECT make_date(date_part('year', '2022-01-01'),
                     date_part('month', '2022-01-01'),
                     date_part('day', '2022-01-01'));
    

    Este código devolverá la fecha completa de '2022-01-01'.

    En conclusion

    Las funciones de formato de PostgreSQL brindan un poderoso conjunto de herramientas para convertir as cadenas a formatos distintos segun el argumento especificado como vemos esto es algo muy comun pero no es estandard de los sistemas de base de datos.

    cuentas cuales otros formatos utilizas comunmente?

    hasta la proxima !!