sql >> Base de Datos >  >> RDS >> SQLite

Cómo funciona la función Strftime() en SQLite

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.