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

Fonctions de date et d'heure SQLite

SQLite prend en charge cinq fonctions pour travailler avec les dates et les heures. Ce sont :

  • date()
  • time()
  • datetime()
  • julianday()
  • strftime()

Toutes ces fonctions acceptent une chaîne de temps comme argument. Ils acceptent également d'autres arguments pour modifier/formater la sortie.

Le strftime() fonction est la fonction la plus polyvalente des cinq. En fait, cette fonction peut faire tout ce que les quatre autres peuvent faire.

En d'autres termes, vous pouvez utiliser strftime() pour toutes vos exigences de formatage de date et d'heure. Les quatre autres fonctions sont disponibles uniquement pour plus de commodité.

Syntaxe

La syntaxe de chaque fonction est la suivante :

date(timestring, modifier, modifier, ...)
time(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...)

Dans les quatre premières fonctions, le premier argument est une chaîne de temps et tous les arguments suivants sont des modificateurs.

Dans le strftime() fonction le premier argument est la chaîne de format, suivie de la chaîne d'heure et de tout modificateur.

Toutes les chaînes de temps valides et les modificateurs sont répertoriés au bas de cet article.

Mais d'abord, passons en revue quelques exemples rapides de chacune de ces fonctions.

La fonction date()

Vous pouvez utiliser le date() fonction avec un argument ou avec plusieurs arguments.

Voici un exemple avec un seul argument :

SELECT date('now');

Résultat :

2020-04-23

Voici un exemple qui utilise un modificateur :

SELECT date('now', 'localtime');

Résultat :

2020-04-24

Dans ce cas, j'ai utilisé le localtime modificateur. Ce modificateur suppose que la chaîne d'heure est en temps universel coordonné (UTC) et ajuste la chaîne d'heure pour qu'elle affiche l'heure locale.

La fonction time()

Le time() la fonction est similaire à la date() fonction, sauf qu'elle affiche l'heure au lieu de la date.

Voici un exemple :

SELECT time('now');

Résultat :

00:02:05

Et le voici avec le localtime modificateur :

SELECT time('now', 'localtime');

Résultat :

10:02:09

La fonction datetime()

Le SQLite datetime() La fonction combine les deux fonctions précédentes, dans le sens où elle affiche à la fois la date et l'heure.

Voici un exemple :

SELECT datetime('now');

Résultat :

"2020-04-24 00:04:13"

Et le voici avec le localtime modificateur :

SELECT datetime('now', 'localtime');

Résultat :

"2020-04-24 10:04:46"

La fonction julianday()

Le julianday() La fonction renvoie le nombre continu de jours depuis le début de la période julienne, qui est le lundi 1er janvier 4713 avant JC, calendrier julien proleptique (24 novembre 4714 avant JC, dans le calendrier grégorien proleptique).

Voici à quoi cela ressemble en utilisant now comme chaîne de temps :

SELECT julianday('now');

Résultat :

2458963.50964815

Et ici, il utilise le localtime modificateur :

SELECT julianday('now', 'localtime');

Résultat :

2458963.92637685

La fonction strftime()

Comme mentionné, le strftime() La fonction peut être utilisée pour générer des valeurs de date et d'heure dans l'un des formats disponibles dans les fonctions précédentes.

Cette fonction vous permet d'être très précis sur la façon dont vos valeurs de date/heure sont formatées. Il vous permet de fournir le format précis que vous souhaitez qu'il soit présenté.

La syntaxe de cette fonction ressemble à ceci :

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

Notez que le premier argument est format . C'est ici que vous fournissez le format dans lequel vous souhaitez que la chaîne d'heure soit sortie.

La chaîne de format pour strftime() peut consister en l'une des substitutions suivantes :

%d Jour du mois :00
%f Fraction de seconde :SS.SSS
%H Heure :00-24
%j Jour de l'année :001-366
%J Numéro du jour julien
%m Mois :01-12
%M Minutes :00-59
%s Secondes depuis le 01/01/1970
%S Secondes :00-59
%w Jour de la semaine 0-6 avec dimanche==0
%W Semaine de l'année :00-53
%Y Année :0000-9999
%% %

Voici un exemple :

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

Résultat :

"2020-04-24 00:43:51"

Dans ce cas, nous obtenons le même résultat que lors de l'utilisation de datetime() fonction.

Le voici avec le localtime modificateur :

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

Résultat :

"2020-04-24 10:45:27"

Encore une fois, même résultat qu'avec datetime() . La différence est, strftime() nous permet de spécifier explicitement le format de la sortie.

Par exemple :

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

Résultat :

"24/04/2020 10:49:41"
"04/24/2020 (10:52:24)"
"10:51:13 on 24/04/2020"

Formats de chaîne d'heure valides

L'argument de chaîne d'heure dans toutes les fonctions de date/heure peut être fourni dans l'un des formats suivants :

  • AAAA-MM-JJ
  • AAAA-MM-JJ HH :MM
  • AAAA-MM-JJ HH:MM:SS
  • AAAA-MM-JJ HH:MM:SS.SSS
  • AAAA-MM-JJTHH :MM
  • AAAA-MM-JJTHH:MM:SS
  • AAAA-MM-JJTHH:MM:SS.SSS
  • HH :MM
  • HH:MM:SS
  • HH:MM:SS.SSS
  • maintenant
  • DDDDDDDDDD

Modificateurs valides

Vous pouvez utiliser n'importe lequel des modificateurs suivants avec les fonctions de date/heure :

  • NNN jours
  • NNN heures
  • NNN minutes
  • NNN.NNNN secondes
  • NNN mois
  • Années NNN
  • début du mois
  • début d'année
  • début de journée
  • jour de semaine N
  • unixepoch
  • heure locale
  • utc

Le N fait référence à un nombre ajouté à la date, en fonction de l'unité spécifiée.

Par exemple :

SELECT 
  date('now'), 
  date('now', '3 days');

Résultat :

date('now')  date('now', '3 days')
-----------  ---------------------
2020-04-24   2020-04-27           

En voici un qui utilise start of month comme modificateur :

SELECT 
  date('now'), 
  date('now', 'start of month');

Résultat :

date('now')  date('now', 'start of month')
-----------  -----------------------------
2020-04-24   2020-04-01