SQLite tiene una date()
función que le permite devolver un valor de fecha basado en una cadena de tiempo y cualquier modificador.
Devuelve la fecha en este formato:AAAA-MM-DD
Para usar esta función, debe proporcionar una cadena de tiempo, además de cualquier modificador (opcional). Un modificador le permite cambiar la fecha, como agregar una cantidad de días, establecer la hora local, etc.
Sintaxis
La sintaxis de date()
la función es así:
date(timestring, modifier, modifier, ...)
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 demostrar el date()
función que se utiliza con un argumento.
SELECT date('now');
Resultado:
2020-04-27
El now
La cadena de tiempo se convierte en la fecha y hora actuales. Dado que estoy usando date()
función, solo se devuelve la fecha.
Agregar un modificador
Podemos modificar el resultado anterior usando un modificador. He aquí un ejemplo.
SELECT date('now', '+6 months');
Resultado:
2020-10-27
En este caso, agregué seis meses a la fecha.
Múltiples modificadores
Como se mencionó, puede agregar uno o más modificadores. Este es un ejemplo de cómo agregar otro modificador al ejemplo anterior.
SELECT date('now', '+6 months', 'localtime');
Resultado:
2020-10-28
En mi caso, el localtime
modificador dio como resultado que se agregara un día a la fecha.
La razón por la que hace esto es porque el 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.
Por lo tanto, puede obtener un resultado diferente, dependiendo de su hora local.
Literal de cadena como cadena de tiempo
Los ejemplos anteriores usan now
como cadena de tiempo, pero puede proporcionar cualquier cadena de tiempo válida.
Aquí hay algunos otros ejemplos.
SELECT date('2020-04-27 23:58:57');
Resultado:
2020-04-27
En este caso, simplemente elimina la parte de la hora de la fecha.
Aquí está de nuevo, pero con algunos modificadores.
SELECT date('2020-04-27 23:58:57', 'start of year', '+6 months');
Resultado:
2020-07-01
En este caso, quería obtener la fecha de 6 meses desde el inicio del año de la fecha proporcionada.
Aquí hay un ejemplo que usa el día juliano como cadena de tiempo.
SELECT date('2458967.49737293');
Resultado:
2020-04-27
fecha() frente a strftime()
La date()
la función devuelve exactamente el mismo resultado que strftime('%Y-%m-%d', ...)
devoluciones. La date()
es solo una forma más conveniente de hacerlo.
SELECT
date('now'),
strftime('%Y-%m-%d', 'now');
Resultado:
date('now') strftime('%Y-%m-%d', 'now') ----------- --------------------------- 2020-04-28 2020-04-28
Intervalo de fechas
Al igual que con todas las funciones de fecha y hora de SQLite, date()
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.