SQLite Fecha y Hora
SQLite admite las siguientes cinco funciones de fecha y hora:
| N.º | Función | Ejemplo |
|---|---|---|
| 1 | date(timestring, modifier, modifier, ...) | Devuelve la fecha en formato YYYY-MM-DD. |
| 2 | time(timestring, modifier, modifier, ...) | Devuelve la hora en formato HH:MM:SS. |
| 3 | datetime(timestring, modifier, modifier, ...) | Devuelve en formato YYYY-MM-DD HH:MM:SS. |
| 4 | julianday(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). |
| 5 | strftime(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 tiempo | Ejemplo |
|---|---|---|
| 1 | YYYY-MM-DD | 2010-12-30 |
| 2 | YYYY-MM-DD HH:MM | 2010-12-30 12:10 |
| 3 | YYYY-MM-DD HH:MM:SS.SSS | 2010-12-30 12:10:04.100 |
| 4 | MM-DD-YYYY HH:MM | 12-30-2010 12:10 |
| 5 | HH:MM | 12:10 |
| 6 | YYYY-MM-DDTHH:MM | 2010-12-30 12:10 |
| 7 | HH:MM:SS | 12:10:01 |
| 8 | YYYYMMDD HHMMSS | 20101230 121001 |
| 9 | now | 2013-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:
| Reemplazo | Descripción | %d | Día del mes, 01-31 | %f | Segundos con parte fraccionaria, SS.SSS | %H | Hora, 00-23 | %j | Día del año, 001-366 | %J | Número de día juliano, DDDD.DDDD | %m | Mes, 00-12 | %M | Minutos, 00-59 | %s | Segundos transcurridos 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, 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