SQLite Date et heure
SQLite prend en charge les cinq fonctions de date et d'heure suivantes :
| Non. | Fonction | Exemple |
|---|---|---|
| 1 | date(timestring, modifier, modifier, ...) | Renvoie la date au format YYYY-MM-DD. |
| 2 | time(timestring, modifier, modifier, ...) | Renvoie l'heure au format HH:MM:SS. |
| 3 | datetime(timestring, modifier, modifier, ...) | Renvoie au format YYYY-MM-DD HH:MM:SS. |
| 4 | julianday(timestring, modifier, modifier, ...) | Ceci renvoie le nombre de jours depuis midi le 24 novembre 4714 av. J.-C., heure de Greenwich. |
| 5 | strftime(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 temps | Exemple |
|---|---|---|
| 1 | YYYY-MM-DD | 2010-12-30 |
| 2 | YYYY-MM-DD HH:MM | 2010-12-30 12:10 |
| 3 | YYYY-MM-DD HH:MM:SS.SSS | 2010-12-30 12:10:04.100 |
| 4 | MM-DD-YYYY HH:MM | 12-30-2010 12:10 |
| 5 | HH:MM | 12:10 |
| 6 | YYYY-MM-DDTHH:MM | 2010-12-30 12:10 |
| 7 | HH:MM:SS | 12:10:01 |
| 8 | YYYYMMDD HHMMSS | 20101230 121001 |
| 9 | now | 2013-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 :
| Substitution | Description | %d | Jour du mois, 01-31 | %f | Secondes avec partie fractionnaire, SS.SSS | %H | Heure, 00-23 | %j | Jour de l'année, 001-366 | %J | Numéro de jour julien, DDDD.DDDD | %m | Mois, 00-12 | %M | Minute, 00-59 | %s | Secondes depuis 1970-01-01 | %S | Seconde, 00-59 | %w | Jour de la semaine, 0-6 (0 est dimanche) | %W | Semaine de l'année, 01-53 | %Y | Anné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