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

Fonctionnement de la fonction Strftime() dans SQLite

Le SQLite strftime() La fonction vous permet de renvoyer une valeur de date et d'heure dans un format spécifié.

La valeur de date/heure réelle renvoyée est basée sur une chaîne d'heure que vous fournissez comme argument lorsque vous appelez la fonction, ainsi que sur tous les modificateurs que vous incluez (comme arguments 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 :

strftime(format, timestring, modifier, modifier, ...)

Le format l'argument peut être n'importe quelle combinaison de substitutions de chaînes de format valides pour strftime() fonction.

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 illustrer.

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

Résultat :

2020-04-29 01:29:54

Le now La chaîne d'heure est convertie en date et heure actuelles, en fonction de la chaîne de format fournie.

Dans ce cas, ma chaîne de format renvoie exactement le même résultat que datetime('now') serait revenu.

Ajouter un modificateur

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

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

Résultat :

2020-04-29 03:31:50

Dans ce cas, j'ai ajouté deux heures au temps.

Modificateurs multiples

Vous pouvez ajouter plusieurs modificateurs. Voici un exemple d'ajout d'un autre modificateur à l'exemple précédent.

SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime');

Résultat :

2020-04-29 13:33:22

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

C'est parce que l'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.

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 
  strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime') AS "Local",
  strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime') AS "Modified";

Résultat :

Local                Modified           
-------------------  -------------------
2020-04-29 11:34:57  2020-04-29 13:34:57

Heure Unix/Epoque

Vous pouvez utiliser le %s chaîne de format (minuscules) pour calculer l'heure de l'époque.

SELECT strftime('%s', 'now');

Résultat :

1588124826

L'heure d'époque (également appelée heure d'époque, heure POSIX, secondes depuis l'époque ou heure d'époque UNIX) est le nombre de secondes depuis le 1970-01-01.

L'heure Unix est largement utilisée dans les systèmes d'exploitation et les formats de fichiers.

Journée Julienne

Vous pouvez utiliser %J pour retourner le jour julien.

Le jour julien est le nombre de jours depuis midi à Greenwich le 24 novembre 4714 av. (en utilisant le calendrier proleptique grégorien).

Si vous utilisez le calendrier julien proleptique, c'est le lundi 1er janvier 4713 av. J.-C.

Le jour julien est généralement utilisé par les astronomes, les logiciels, etc. pour calculer les jours écoulés entre deux événements.

Voici comment retourner le jour julien avec le strftime() fonction.

SELECT strftime('%J', 'now');

Résultat :

2458968.575441667               

Une autre façon de faire cela dans SQLite est d'utiliser le julianday() fonction.

Plage de dates

Comme avec toutes les fonctions de date et d'heure SQLite, strftime() 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.