SQLite Date et heure

SQLite prend en charge les cinq fonctions de date et d'heure suivantes :

Non.FonctionExemple
1date(timestring, modifier, modifier, ...)Renvoie la date au format YYYY-MM-DD.
2time(timestring, modifier, modifier, ...)Renvoie l'heure au format HH:MM:SS.
3datetime(timestring, modifier, modifier, ...)Renvoie au format YYYY-MM-DD HH:MM:SS.
4julianday(timestring, modifier, modifier, ...)Ceci renvoie le nombre de jours depuis midi le 24 novembre 4714 av. J.-C., heure de Greenwich.
5strftime(format, timestring, modifier, modifier, ...)Ceci renvoie une date formatée selon la chaîne de format spécifiée par le premier paramètre. Voir l'explication ci-dessous pour les formats spécifiques.

Les cinq fonctions de date et d'heure ci-dessus prennent une chaîne de temps comme argument. La chaîne de temps est suivie de zéro ou plusieurs modificateurs. La fonction strftime() peut également prendre une chaîne de format comme premier argument. Ci-dessous, nous expliquerons en détail les différents types de chaînes de temps et de modificateurs.

Chaînes de temps

Une chaîne de temps peut être dans l'un des formats suivants :

Non.Chaîne de tempsExemple
1YYYY-MM-DD2010-12-30
2YYYY-MM-DD HH:MM2010-12-30 12:10
3YYYY-MM-DD HH:MM:SS.SSS2010-12-30 12:10:04.100
4MM-DD-YYYY HH:MM12-30-2010 12:10
5HH:MM12:10
6YYYY-MM-DDTHH:MM2010-12-30 12:10
7HH:MM:SS12:10:01
8YYYYMMDD HHMMSS20101230 121001
9now2013-05-07

Vous pouvez utiliser "T" comme caractère littéral séparant la date et l'heure.

Modificateurs

La chaîne de temps peut être suivie de zéro ou plusieurs modificateurs qui modifieront la date et/ou l'heure renvoyées par les cinq fonctions ci-dessus. Les cinq fonctions ci-dessus renvoient toutes l'heure. Les modificateurs doivent être utilisés de gauche à droite. Voici les modificateurs pouvant être utilisés dans SQLite :

  • NNN jours

  • NNN heures

  • NNN minutes

  • NNN.NNNN secondes

  • NNN mois

  • NNN années

  • début du mois

  • début de l'année

  • début du jour

  • jour de la semaine N

  • unixepoch

  • localtime

  • utc

Formatage

SQLite fournit une fonction très pratiquestrftime()pour formater n'importe quelle date et heure. Vous pouvez utiliser les substitutions suivantes pour formater la date et l'heure :

SubstitutionDescription %dJour du mois, 01-31 %fSecondes avec partie fractionnaire, SS.SSS %HHeure, 00-23 %jJour de l'année, 001-366 %JNuméro de jour julien, DDDD.DDDD %mMois, 00-12 %MMinute, 00-59 %sSecondes depuis 1970-01-01 %SSeconde, 00-59 %wJour de la semaine, 0-6 (0 est dimanche) %WSemaine de l'année, 01-53 %YAnnée, YYYY %%symbole %

Exemples

Essayons maintenant différents exemples en utilisant l'invite SQLite. Ce qui suit calcule la date actuelle :

sqlite> SELECT date('now');
2013-05-07

Ce qui suit calcule le dernier jour du mois en cours :

sqlite> SELECT date('now','start of month','+1 month','-1 day');
2013-05-31

Ce qui suit calcule la date et l'heure pour l'horodatage UNIX donné 1092941466 :

sqlite> SELECT datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06

Ce qui suit calcule la date et l'heure pour l'horodatage UNIX donné 1092941466 dans le fuseau horaire local :

sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
2004-08-19 11:51:06

Ce qui suit calcule l'horodatage UNIX actuel :

sqlite> SELECT strftime('%s','now');
1367926057

Ce qui suit calcule le nombre de jours depuis la signature de la "Déclaration d'indépendance" des États-Unis :

sqlite> SELECT julianday('now') - julianday('1776-07-04');
86504.4775830326

Ce qui suit calcule le nombre de secondes depuis un moment spécifique en 2004 :

sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
295001572

Ce qui suit calcule la date du premier mardi d'octobre de l'année en cours :

sqlite> SELECT date('now','start of year','+9 months','weekday 2');
2013-10-01

Ce qui suit calcule le temps en secondes depuis l'époque UNIX (similaire à strftime('%s','now'), sauf qu'il inclut une partie fractionnaire) :

sqlite> SELECT (julianday('now') - 2440587.5)*86400.0;
1367926077.12598

Pour convertir entre les valeurs de temps UTC et locales, utilisez les modificateurs utc ou localtime lors du formatage des dates, comme indiqué ci-dessous :

sqlite> SELECT time('12:00', 'localtime');
05:00:00
sqlite>  SELECT time('12:00', 'utc');
19:00:00
Autres extensions