SQLite Fecha y Hora

SQLite admite las siguientes cinco funciones de fecha y hora:

N.ºFunciónEjemplo
1date(timestring, modifier, modifier, ...)Devuelve la fecha en formato YYYY-MM-DD.
2time(timestring, modifier, modifier, ...)Devuelve la hora en formato HH:MM:SS.
3datetime(timestring, modifier, modifier, ...)Devuelve en formato YYYY-MM-DD HH:MM:SS.
4julianday(timestring, modifier, modifier, ...)Esto devuelve el número de días desde el mediodía del 24 de noviembre de 4714 a. C. (hora de Greenwich).
5strftime(format, timestring, modifier, modifier, ...)Esto devuelve la fecha formateada según la cadena de formato especificada por el primer parámetro. Consulte la explicación 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 (modifier). La función strftime() también puede tomar una cadena de formato como su primer parámetro. A continuación, le explicaremos en detalle los diferentes tipos de cadenas de tiempo y modificadores.

Cadena de tiempo

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

N.ºCadena de tiempoEjemplo
1YYYY-MM-DD2010-12-30
2YYYY-MM-DD HH:MM2010-12-30 12:10
3YYYY-MM-DD HH:MM:SS.SSS2010-12-30 12:10:04.100
4MM-DD-YYYY HH:MM12-30-2010 12:10
5HH:MM12:10
6YYYY-MM-DDTHH:MM2010-12-30 12:10
7HH:MM:SS12:10:01
8YYYYMMDD HHMMSS20101230 121001
9now2013-05-07

Puede usar 'T' como carácter literal para separar la fecha y la hora.

Modificadores (Modifier)

La cadena de tiempo puede ir seguida de cero o más modificadores, los cuales cambiarán la fecha y/o la hora devueltas por las cinco funciones anteriores. Cualquiera de las cinco funciones anteriores devuelve tiempo. Los modificadores deben usarse de izquierda a derecha. A continuación se enumeran los modificadores que se pueden usar en SQLite:

  • NNN days

  • NNN hours

  • NNN minutes

  • NNN.NNNN seconds

  • NNN months

  • NNN years

  • start of month

  • start of year

  • start of day

  • weekday N

  • unixepoch

  • localtime

  • utc

Formato

SQLite ofrece funciones muy convenientesstrftime()para formatear cualquier fecha y hora. Puede usar las siguientes sustituciones para formatear la fecha y la hora:

ReemplazoDescripción %dDía del mes, 01-31 %fSegundos con parte fraccionaria, SS.SSS %HHora, 00-23 %jDía del año, 001-366 %JNúmero de día juliano, DDDD.DDDD %mMes, 00-12 %MMinutos, 00-59 %sSegundos transcurridos desde 1970-01-01 %SSegundos, 00-59 %wDía de la semana, 0-6 (0 es domingo) %WSemana del año, 01-53 %YAño, YYYY %%% symbol

Ejemplos

Ahora usemos el símbolo del sistema de SQLite para probar diferentes ejemplos. Lo siguiente calcula la fecha actual:

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

Lo siguiente calcula el último día del mes actual:

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

Lo siguiente calcula la fecha y hora para la marca de tiempo UNIX 1092941466:

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

Lo siguiente calcula la fecha y hora de la marca de tiempo UNIX 1092941466 relativa a la zona horaria local:

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

Lo siguiente calcula la marca de tiempo UNIX actual:

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

Lo siguiente calcula el número de días desde la firma de la Declaración de Independencia de los EE. UU.:

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

Lo siguiente calcula el número de segundos transcurridos desde un momento específico de 2004:

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

Lo siguiente 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

Lo siguiente calcula el tiempo en segundos desde la época UNIX (similar a strftime('%s','now'), excepto que incluye la parte fraccionaria):

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

Para convertir entre valores de hora UTC y hora local, cuando se formatea fechas, use los modificadores utc o localtime, como se muestra a continuación:

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