SQL básico. Funciones de fecha.

SQLite no tiene un tipo de dato fecha o tiempo, en su lugar el almacena las fecha en un formato de cadena determinado y las manipula a través de funciones.

Las cadenas de texto deben cumplir con los siguientes formatos de valor tiempo para ser tomados como fechas o tiempo por las funciones:

YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD

Puede consultar los valores de tiempo completos en la página oficial de SQLite.

Función SQL DATE().

Regresa la fecha en el formato YYYY-MM-DD.

Sintaxis: DATE(valor-tiempo, modificador, modificador, …)

Donde valor-tiempo es una cadena de texto con el formato arriba descrito. Y los modificadores pueden ser, entre otros:

NNN days
NNN hours
NNN minutes
NNN.NNNN seconds
NNN months
NNN years
localtime

Puede consultar los modificadores completos en la página oficial de SQLite. Veamos algunos ejemplos de el uso de la función date().

Función DATE().

En el ejemplo anterior obtenemos primeramente en la primera columna la fecha actual del sistema (al tiempo de publicar esta entrada el 2 de septiembre de 2021) aplicando el modificador mostrado, y en los columnas posteriores hacemos operaciones de agregar y restar días a la fecha actual. Por último se muestra como agregar un mes y un año a la fecha actual.

Función SQL DATETIME().

Regresa la fecha y el tiempo de 24 horas en el formato YYYY-MM-DD HH:MM:SS.

Sintaxis: DATETIME(valor-tiempo, modificador, modificador, …)

Donde valor-tiempo es una cadena de texto con el formato arriba descrito. Los modificadores son los mismos descritos en en la función DATE().

Veamos el siguiente ejemplo:

Función DATETIME().

En la primer columna la función DATETIME() obtiene la fecha y hora UTC (Tiempo Universal Coordinado) que corresponde a la hora en el meridiano de Greenwich. En la segunda columna la misma función agrega el modificador “localtime” lo que provoca que la fecha y hora correspondan a la zona geográfica en la que nos encontramos.

Podemos también usar los modificadores que utilizamos anteriormente en la función DATE(), pero además podemos usar los modificadores que suman o restan horas, minutos y segundos:

Función DATATIME().

La primera columna muestra la fucnión DATETIME() obteniendo la fecha y hora actual, las siguientes columnas muestran la misma fecha y hora pero aumentada 1 hora, decrementada 30 minutos y aumentada 60 segundos, respectivamente.

Función JULIANDAY().

Regresa el día Juliano al que corresponde la fecha y tiempo dados.

Sintaxis: JULIANDAY(valor-tiempo, modificador, modificador, …)

Ésta función también acepta los mismos modificadores que la función DATE() y DATETIME(). Veamos un ejemplo:

Función JULIANDAY().

En este ejemplo, estamos obteniendo el día juliano correspondiente al día en que se publicó esta entrada, que es el día 2 de Septiembre de 2021.

Obtener los días de diferencia entre dos fechas con SQLite.

Para obtener la diferencia de días entre dos fechas usamos la función JULIANDAY() de la siguiente forma:

Diferencia de días entre dos fechas.

En el ejemplo anterior estamos obteniendo los días transcurridos desde el 16 de Septiembre de 1810 hasta la fecha y hora que se escribió esta entrada que es el 2 de Septiembre de 2021.

En esta sección vimos las funciones de fecha y tiempo más usadas, existen otras las cuales pueden consultar en la documentación del sitio oficial de SQLite.

En la siguiente sección veremos como resumir (summarize en inglés) o acumular datos con SQL. ¡Hasta la próxima!

SQL intermedio: subconsultas en la cláusula FROM.

Las subconsultas también pueden aparecer en la cláusula FROM de un instrucción SELECT. Las subconsultas en la cláusula FROM pueden ser de tipo multi columna y multi fila o escalares. La instrucción SELECT ve como una tabla más los resultados de las subconsultas. Veamos un ejemplo:

Subconsulta en cláusula FROM.

En el ejemplo anterior la subconsulta obtiene el valor promedio del todos los totales de las facturas (tabla Invoice) que da como resultado la columna con alias “promedio” con valor 5.65194174757283 y le asigna el alias “promedio_total” a la subconsulta. El SELECT ve la subconsulta como si fuera una tabla llamada “promedio_total”.

La consulta hace un producto cruzado entre “promedio_total” y la tabla “invoice” con alias “factura” y filtra las filas mostrando sólo aquellas que el total de la factura sea mayor al promedio.

En este caso la consulta sólo hace un producto cruzado entre la subconsulta y la tabla, pero puede también ser usado en uniones o concatenaciones tanto internas como externas.

Espero y les sea útil este artículo. ¡Hasta la próxima!

DB Browser for SQLite: Cómo habilitar las funciones matemáticas.

Por defecto, la versión 3.12.2 de DB Browser for SQLite (DB4S), que es la versión más reciente de este software a la fecha de publicación de esta artículo, tiene incluido una versión de SQLite que no implementa las funciones matemáticas de SQLite. Si queremos ejecutar alguna de éstas funciones matemáticas, por ejemplo la función que obtiene la raíz cuadrada SQRT(), la aplicación nos arroja el mensaje de que dicha función no existe.

En el siguiente video, veremos un truco de cómo instalar la versión más reciente de SQLite, que ya incluye las funciones SQL matemáticas, en la aplicación DB Browser for SQLite.

Aquí te dejo el video:

Espero y les sea útil.

¡Hasta pronto!