SQLite
 sql >> Base de données >  >> RDS >> SQLite

Fonctionnement de la fonction DateTime () dans SQLite

Le SQLite datetime() La fonction vous permet de renvoyer une valeur de date et d'heure basée sur une chaîne d'heure et tous les modificateurs.

Il renvoie la date au format :AAAA-MM-JJ HH:MM:SS

Pour utiliser cette fonction, vous devez fournir une chaîne d'heure, ainsi que tous les modificateurs (facultatifs). Un modificateur vous permet de modifier la date, comme ajouter un nombre de jours, la régler sur l'heure locale, etc

Syntaxe

La syntaxe ressemble à ceci :

datetime(timestring, modifier, modifier, ...)

La timestring l'argument doit être une chaîne de temps valide.

Le modifier les arguments sont facultatifs. Vous pouvez fournir un ou plusieurs modificateurs. Si vous fournissez un modificateur, il doit s'agir d'un modificateur valide.

Exemple

Voici un exemple pour démontrer le datetime() fonction utilisée avec un argument.

SELECT datetime('now');

Résultat :

2020-04-28 23:56:06

Le now La chaîne d'heure est convertie en date et heure actuelles.

Ajouter un modificateur

Nous pouvons modifier le résultat précédent en utilisant un modificateur. Voici un exemple.

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

Résultat :

2020-04-29 02:56:52

Dans ce cas, j'ai ajouté trois heures au temps. Compte tenu de l'heure d'origine, cela a également entraîné l'avancement de la date au jour suivant.

Modificateurs multiples

Comme mentionné, vous pouvez ajouter un ou plusieurs modificateurs. Voici un exemple d'ajout d'un autre modificateur à l'exemple précédent.

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

Résultat :

2020-04-29 12:58:13

Dans mon cas, le localtime le modificateur a entraîné l'avancement de l'heure.

La raison pour laquelle il le fait est que le localtime Le modificateur suppose que la chaîne d'heure fournie est en temps universel coordonné (UTC). Il ajuste ensuite la chaîne d'heure pour qu'elle affiche l'heure locale.

Par conséquent, vous pouvez obtenir un résultat différent en fonction de votre heure locale.

Ici, il compare à nouveau l'heure locale d'origine avec le résultat modifié :

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

Résultat :

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

Date comme chaîne d'heure

Les exemples ci-dessus utilisent now comme chaîne d'heure, mais vous pouvez fournir n'importe quelle chaîne d'heure valide.

Si vous ne fournissez que la partie date, la partie heure sera définie sur zéro.

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

Résultat :

2010-08-15 00:00:00

Si seule la partie heure est fournie, la date est définie sur 2000-01-01.

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

Résultat :

2000-01-01 23:58:57

Voici un exemple qui utilise le jour julien comme chaîne d'heure.

SELECT datetime('2451545.49927083');

Résultat :

2000-01-01 23:58:57

datetime() contre strftime()

Le datetime() La fonction renvoie exactement le même résultat que strftime('%Y-%m-%d %H:%M:%S', ...) Retour. Le datetime() est juste un moyen plus pratique de le faire.

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

Résultat :

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

Plage de dates

Comme avec toutes les fonctions de date et d'heure SQLite, datetime() ne fonctionne que pour les dates entre 0000-01-01 00:00:00 et 9999-12-31 23:59:59 (numéros de jour julien 1721059.5 à 5373484.5).

Pour les dates en dehors de cette plage, les résultats ne sont pas définis.