SQLite - Fecha y hora

SQLite admite cinco funciones de fecha y hora de la siguiente manera:

No Señor. Función Ejemplo
1 fecha (cadena de tiempo, modificadores ...) Esto devuelve la fecha en este formato: AAAA-MM-DD
2 tiempo (cadena de tiempo, modificadores ...) Esto devuelve la hora como HH: MM: SS
3 fecha y hora (cadena de tiempo, modificadores ...) Esto devuelve AAAA-MM-DD HH: MM: SS
4 julianday (cadena de tiempo, modificadores ...) Devuelve el número de días desde el mediodía en Greenwich el 24 de noviembre de 4714 a. C.
5 strftime (cadena de tiempo, modificadores ...) Esto devuelve la fecha formateada según la cadena de formato especificada como el primer argumento formateado según los formateadores que se explican a continuación.

Las cinco funciones de fecha y hora anteriores toman una cadena de tiempo como argumento. La cadena de tiempo va seguida de cero o más modificadores. La función strftime () también toma una cadena de formato como primer argumento. La siguiente sección le brindará detalles sobre los diferentes tipos de cadenas de tiempo y modificadores.

Cadenas de tiempo

Una cadena de tiempo puede tener cualquiera de los siguientes formatos:

No Señor. Cadena de tiempo Ejemplo
1 AAAA-MM-DD 2010-12-30
2 AAAA-MM-DD HH: MM 2010-12-30 12:10
3 AAAA-MM-DD HH: MM: SS.SSS 2010-12-30 12: 10: 04.100
4 DD-MM-AAAA HH: MM 30-12-2010 12:10
5 HH: MM 12:10
6 AAAA-MM-DDTHH: MM 2010-12-30 12:10
7 HH: MM: SS 12:10:01
8 AAAAMMDD HHMMSS 20101230 121001
9 ahora 2013-05-07

Puede utilizar la "T" como un carácter literal que separa la fecha y la hora.

Modificadores

La cadena de tiempo puede ir seguida de cero o más modificadores que alterarán la fecha y / o la hora devuelta por cualquiera de las cinco funciones anteriores. Los modificadores se aplican de izquierda a derecha.

Los siguientes modificadores están disponibles en SQLite:

  • NNN días
  • NNN horas
  • NNN minutos
  • NNN.NNNN segundos
  • NNN meses
  • NNN años
  • comienzo de mes
  • inicio de año
  • comienzo del día
  • día de la semana N
  • unixepoch
  • localtime
  • utc

Formateadores

SQLite proporciona una función muy útil strftime()para formatear cualquier fecha y hora. Puede utilizar las siguientes sustituciones para formatear su fecha y hora.

Sustitución Descripción
%re Día del mes, 01-31
%F Segundos fraccionarios, SS.SSS
% H Hora, 00-23
% j Día del año, 001-366
% J Número de día juliano, DDDD.DDDD
%metro Mes, 00-12
%METRO Minuto, 00-59
% s Segundos desde 1970-01-01
% S Segundos, 00-59
% w Día de la semana, 0-6 (0 es domingo)
% W Semana del año, 01-53
% Y Año, AAAA
%% símbolo%

Ejemplos

Probemos ahora con varios ejemplos usando el indicador SQLite. El siguiente comando calcula la fecha actual.

sqlite> SELECT date('now');
2013-05-07

El siguiente comando calcula el último día del mes actual.

sqlite> SELECT date('now','start of month','+1 month','-1 day');
2013-05-31

El siguiente comando calcula la fecha y la hora para una marca de tiempo UNIX determinada 1092941466.

sqlite> SELECT datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06

El siguiente comando calcula la fecha y la hora de una marca de tiempo UNIX determinada 1092941466 y compensa su zona horaria local.

sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
2004-08-19 13:51:06

El siguiente comando calcula la marca de tiempo actual de UNIX.

sqlite> SELECT strftime('%s','now');
1393348134

El siguiente comando calcula el número de días desde la firma de la Declaración de Independencia de EE. UU.

sqlite> SELECT julianday('now') - julianday('1776-07-04');
86798.7094695023

El siguiente comando calcula el número de segundos desde un momento particular en 2004.

sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
295001572

El siguiente comando calcula la fecha del primer martes de octubre del año actual.

sqlite> SELECT date('now','start of year','+9 months','weekday 2');
2013-10-01

El siguiente comando calcula el tiempo desde la época de UNIX en segundos (como strftime ('% s', 'ahora') excepto que incluye parte fraccionaria).

sqlite> SELECT (julianday('now') - 2440587.5)*86400.0;
1367926077.12598

Para convertir entre los valores de hora local y UTC al formatear una fecha, use los modificadores utc o localtime de la siguiente manera:

sqlite> SELECT time('12:00', 'localtime');
05:00:00
sqlite> SELECT time('12:00', 'utc');
19:00:00