Problema:
Desea formatear una columna o valor de fecha y hora en SQLite.
Ejemplo:
Nuestra base de datos tiene una tabla llamada ticket
con datos en las columnas passenger_ID
, train_number
y sale_datetime
.
pasajero_ID | número_de_tren | salida_fechahora |
---|---|---|
245NX | 4505 | 2019-10-17 12:56:30 |
127RG | 3403 | 2019-10-17 11:45:23 |
567FH | 4505 | 2019-10-18 12:40:32 |
230AP | 6700 | 2019-10-18 13:20:20 |
118BB | 3403 | 2019-10-18 13:13:13 |
Para cada venta de boletos, obtengamos la identificación del pasajero, el número de tren y la fecha y hora de venta. Queremos dar formato a la fecha de venta para que muestre el día, el mes y el año separados por barras (/), con una coma entre el año y la hora. Solo queremos la hora y el minuto de la venta.
Esta es la consulta que escribiría:
Solución:
SELECT passenger_ID, train_number, STRFTIME('%d/%m/%Y, %H:%M', sale_datetime) AS sale_formatted_datetime FROM ticket;
Este es el resultado de la consulta:
pasajero_ID | número_de_tren | salida_formatted_datetime |
---|---|---|
245NX | 4505 | 17/10/2019, 12:56 |
127RG | 3403 | 17/10/2019, 11:45 |
567FH | 4505 | 18/10/2019, 12:40 |
230AP | 6700 | 18/10/2019, 13:20 |
118BB | 3403 | 18/10/2019, 13:13 |
Discusión:
Utilice el STRFTIME()
función para formatear datos de fecha\hora\fechahora en SQLite. Esta función toma dos argumentos. El primer argumento es una cadena de formato que contiene el patrón de parte de fecha/hora. En nuestro ejemplo, usamos la cadena de formato '%d/%m/%Y, %H:%M '. En esta cadena:
- %d es un día de dos dígitos.
- % m es un mes de dos dígitos.
- %Y es un año de cuatro dígitos.
- %H es una hora de dos dígitos.
- %M es un minuto de dos dígitos.
Puede encontrar más especificadores de fecha y hora en la documentación de SQLite.
El segundo argumento es el valor de hora/fecha/fechahora al formato. Puede ser una expresión que devuelva un valor de hora/fecha/fechahora o el nombre de una columna de hora/fecha/fechahora. (En nuestro ejemplo, es la columna sale_datetime
.)
STRFTIME()
devuelve la fecha y la hora formateadas. En nuestro ejemplo, la fecha y la hora formateadas no contienen segundos y las partes de la fecha están separadas por barras inclinadas (/) en lugar de guiones (-).