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

Funciones de fecha y hora de SQLite

SQLite admite cinco funciones para trabajar con fechas y horas. Estos son:

  • date()
  • time()
  • datetime()
  • julianday()
  • strftime()

Todas estas funciones aceptan una cadena de tiempo como argumento. También aceptan otros argumentos para modificar/formatear la salida.

El strftime() La función es la función más versátil de las cinco. De hecho, esta función puede hacer todo lo que pueden hacer las otras cuatro.

En otras palabras, podría usar strftime() para todos sus requisitos de formato de fecha y hora. Las otras cuatro funciones están disponibles únicamente por comodidad.

Sintaxis

La sintaxis de cada función es la siguiente:

date(timestring, modifier, modifier, ...)
time(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...)

En las primeras cuatro funciones, el primer argumento es una cadena de tiempo y los argumentos subsiguientes son modificadores.

En el strftime() función el primer argumento es la cadena de formato, seguida de la cadena de tiempo y cualquier modificador.

Todas las cadenas de tiempo y modificadores válidos se enumeran cerca de la parte inferior de este artículo.

Pero primero, veamos algunos ejemplos rápidos de cada una de estas funciones.

La función fecha()

Puedes usar la date() función con un argumento, o con múltiples argumentos.

Aquí hay un ejemplo con solo un argumento:

SELECT date('now');

Resultado:

2020-04-23

Aquí hay un ejemplo que usa un modificador:

SELECT date('now', 'localtime');

Resultado:

2020-04-24

En este caso utilicé el localtime modificador Este modificador asume que la cadena de tiempo está en hora universal coordinada (UTC) y ajusta la cadena de tiempo para que muestre la hora local.

La función hora()

El time() la función es similar a date() función, excepto que muestra la hora en lugar de la fecha.

He aquí un ejemplo:

SELECT time('now');

Resultado:

00:02:05

Y aquí está con el localtime modificador:

SELECT time('now', 'localtime');

Resultado:

10:02:09

La función fechahora()

El SQLite datetime() combina las dos funciones anteriores, en el sentido de que genera tanto la fecha como la hora.

He aquí un ejemplo:

SELECT datetime('now');

Resultado:

"2020-04-24 00:04:13"

Y aquí está con el localtime modificador:

SELECT datetime('now', 'localtime');

Resultado:

"2020-04-24 10:04:46"

La función julianday()

El julianday() La función devuelve el recuento continuo de días desde el comienzo del período juliano, que es el lunes 1 de enero de 4713 a. C., calendario juliano proléptico (24 de noviembre de 4714 a. C., en el calendario gregoriano proléptico).

Esto es lo que parece usar now como la cadena de tiempo:

SELECT julianday('now');

Resultado:

2458963.50964815

Y aquí está usando el localtime modificador:

SELECT julianday('now', 'localtime');

Resultado:

2458963.92637685

La función strftime()

Como se mencionó, el strftime() La función se puede utilizar para generar valores de fecha y hora en cualquiera de los formatos disponibles en las funciones anteriores.

Esta función le permite ser muy específico con el formato de los valores de fecha/hora. Le permite proporcionar el formato preciso en el que desea que se presente.

La sintaxis de esta función es así:

strftime(format, timestring, modifier, modifier, ...)

Observe que el primer argumento es format . Aquí es donde proporciona el formato en el que desea que se emita la cadena de tiempo.

La cadena de formato para strftime() puede consistir en cualquiera de las siguientes sustituciones:

%d Día del mes:00
%f Segundos fraccionarios:SS.SSS
%H Hora:00-24
%j Día del año:001-366
%J Número de día juliano
%m Mes:01-12
% M Minuto:00-59
%s Segundos desde 1970-01-01
%S Segundos:00-59
%w Día de la semana 0-6 con domingo==0
%W Semana del año:00-53
%Y Año:0000-9999
%% %

He aquí un ejemplo:

SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');

Resultado:

"2020-04-24 00:43:51"

En este caso obtenemos el mismo resultado que cuando usamos datetime() función.

Aquí está con el localtime modificador:

SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime');

Resultado:

"2020-04-24 10:45:27"

Nuevamente, el mismo resultado que con datetime() . La diferencia es, strftime() nos permite especificar explícitamente el formato de la salida.

Por ejemplo:

SELECT strftime('%d/%m/%Y %H:%M:%S', 'now', 'localtime');
SELECT strftime('%m/%d/%Y (%H:%M:%S)', 'now', 'localtime');
SELECT strftime('%H:%M:%S on %d/%m/%Y', 'now', 'localtime');

Resultado:

"24/04/2020 10:49:41"
"04/24/2020 (10:52:24)"
"10:51:13 on 24/04/2020"

Formatos de cadena de tiempo válidos

El argumento de cadena de tiempo en todas las funciones de fecha/hora se puede proporcionar en cualquiera de los siguientes formatos:

  • AAAA-MM-DD
  • AAAA-MM-DD HH:MM
  • AAAA-MM-DD HH:MM:SS
  • AAAA-MM-DD HH:MM:SS.SSS
  • AAAA-MM-DDTHH:MM
  • AAAA-MM-DDTHH:MM:SS
  • AAAA-MM-DDTHH:MM:SS.SSS
  • HH:MM
  • HH:MM:SS
  • HH:MM:SS.SSS
  • ahora
  • DDDDDDDDDD

Modificadores válidos

Puede usar cualquiera de los siguientes modificadores con funciones de fecha/hora:

  • NNN días
  • NNN horas
  • NNN minutos
  • NNN.NNNN segundos
  • NNN meses
  • NNN años
  • comienzo de mes
  • comienzo de año
  • comienzo del día
  • día de la semana N
  • época unix
  • hora local
  • utc

El N se refiere a un número que se agrega a la fecha, según la unidad especificada.

Por ejemplo:

SELECT 
  date('now'), 
  date('now', '3 days');

Resultado:

date('now')  date('now', '3 days')
-----------  ---------------------
2020-04-24   2020-04-27           

Aquí hay uno que usa start of month como modificador:

SELECT 
  date('now'), 
  date('now', 'start of month');

Resultado:

date('now')  date('now', 'start of month')
-----------  -----------------------------
2020-04-24   2020-04-01