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

Cómo funciona la función DateTime() en SQLite

El SQLite datetime() La función le permite devolver un valor de fecha y hora basado en una cadena de tiempo y cualquier modificador.

Devuelve la fecha en este formato:AAAA-MM-DD HH:MM:SS

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, establecerla en la hora local, etc.

Sintaxis

La sintaxis es así:

datetime(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 datetime() función que se utiliza con un argumento.

SELECT datetime('now');

Resultado:

2020-04-28 23:56:06

El now La cadena de tiempo se convierte en la fecha y hora actuales.

Agregar un modificador

Podemos modificar el resultado anterior usando un modificador. He aquí un ejemplo.

SELECT datetime('now', '+3 hours');

Resultado:

2020-04-29 02:56:52

En este caso, agregué tres horas al tiempo. Dada la hora original, esto también provocó que la fecha se adelantara al día siguiente.

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 datetime('now', '+3 hours', 'localtime');

Resultado:

2020-04-29 12:58:13

En mi caso, el localtime modificador resultó en el avance del tiempo.

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.

Aquí está nuevamente comparando la hora local original con el resultado modificado:

SELECT 
  datetime('now', 'localtime') AS "Local",
  datetime('now', '+3 hours', 'localtime') AS "Modified";

Resultado:

Local                Modified           
-------------------  -------------------
2020-04-29 10:02:09  2020-04-29 13:02:09

Fecha como cadena de tiempo

Los ejemplos anteriores usan now como cadena de tiempo, pero puede proporcionar cualquier cadena de tiempo válida.

Si proporciona solo la parte de la fecha, la parte de la hora se establecerá en ceros.

SELECT datetime('2010-08-15');

Resultado:

2010-08-15 00:00:00

Si solo se proporciona la parte de la hora, la fecha se establece en 2000-01-01.

SELECT datetime('23:58:57');

Resultado:

2000-01-01 23:58:57

Aquí hay un ejemplo que usa el día juliano como cadena de tiempo.

SELECT datetime('2451545.49927083');

Resultado:

2000-01-01 23:58:57

fecha y hora() frente a strftime()

El datetime() La función devuelve exactamente el mismo resultado que strftime('%Y-%m-%d %H:%M:%S', ...) devoluciones. El datetime() es solo una forma más conveniente de hacerlo.

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

Resultado:

datetime('now')      strftime('%Y-%m-%d %H:%M:%S', 'now')
-------------------  ------------------------------------
2020-04-29 00:16:12  2020-04-29 00:16:12                 

Intervalo de fechas

Al igual que con todas las funciones de fecha y hora de SQLite, datetime() 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.