El strftime()
de SQLite La función le permite devolver un valor de fecha y hora en un formato específico.
El valor de fecha/hora real devuelto se basa en una cadena de tiempo que proporciona como argumento cuando llama a la función, así como cualquier modificador que incluya (como argumentos opcionales). Un modificador le permite cambiar la fecha, como agregar una cantidad de días, establecerla en la hora local, etc.
Sintaxis
La sintaxis es así:
strftime(format, timestring, modifier, modifier, ...)
El format
El argumento puede ser cualquier combinación de sustituciones de cadenas de formato válidas para strftime()
función.
La timestring
el argumento debe ser una cadena de tiempo válida.
El modifier
los argumentos son opcionales. Puede proporcionar uno o más modificadores. Si proporciona un modificador, debe ser un modificador válido.
Ejemplo
Aquí hay un ejemplo para demostrarlo.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
Resultado:
2020-04-29 01:29:54
El now
La cadena de tiempo se convierte en la fecha y hora actuales, según la cadena de formato proporcionada.
En este caso, mi cadena de formato devuelve exactamente el mismo resultado que datetime('now')
habría regresado.
Agregar un modificador
Podemos modificar el resultado anterior usando un modificador. He aquí un ejemplo.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours');
Resultado:
2020-04-29 03:31:50
En este caso agregué dos horas al tiempo.
Múltiples modificadores
Puede agregar varios modificadores. Este es un ejemplo de cómo agregar otro modificador al ejemplo anterior.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime');
Resultado:
2020-04-29 13:33:22
En mi caso, el localtime
modificador resultó en el avance del tiempo.
Esto se debe a que localtime
El modificador asume que la cadena de tiempo proporcionada está en tiempo universal coordinado (UTC). Luego ajusta la cadena de tiempo para que muestre la hora local.
Es posible que obtenga un resultado diferente, dependiendo de su hora local.
Aquí está nuevamente comparando la hora local original con el resultado modificado:
SELECT
strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime') AS "Local",
strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime') AS "Modified";
Resultado:
Local Modified ------------------- ------------------- 2020-04-29 11:34:57 2020-04-29 13:34:57
Unix/Epoca
Puedes usar el %s
cadena de formato (en minúsculas) para calcular el tiempo de época.
SELECT strftime('%s', 'now');
Resultado:
1588124826
El tiempo de época (también conocido como tiempo de época, tiempo POSIX, segundos desde la época o tiempo de época UNIX) es el número de segundos desde 1970-01-01.
El tiempo de Unix es ampliamente utilizado en sistemas operativos y formatos de archivo.
Día Julián
Puedes usar %J
para volver el Día Juliano.
Julian Day es el número de días transcurridos desde el mediodía en Greenwich el 24 de noviembre de 4714 a.C. (utilizando el calendario gregoriano proléptico).
Si usa el calendario juliano proléptico, este es el lunes 1 de enero de 4713 a. C.
Los astrónomos, el software, etc. suelen utilizar el día juliano para calcular los días transcurridos entre dos eventos.
Aquí se explica cómo devolver el día juliano con strftime()
función.
SELECT strftime('%J', 'now');
Resultado:
2458968.575441667
Otra forma de hacer esto en SQLite es usar julianday()
función.
Intervalo de fechas
Al igual que con todas las funciones de fecha y hora de SQLite, strftime()
solo funciona para fechas entre 0000-01-01 00:00:00 y 9999-12-31 23:59:59 (día juliano números 1721059.5 a 5373484.5).
Para fechas fuera de ese rango, los resultados son indefinidos.