SQLite: data e ora

SQLite supporta cinque funzioni di data e ora come segue:

Sr.No. Funzione Esempio
1 data (stringa temporale, modificatori ...) Ciò restituisce la data in questo formato: AAAA-MM-GG
2 tempo (stringa temporale, modificatori ...) Restituisce l'ora come HH: MM: SS
3 datetime (stringa temporale, modificatori ...) Ciò restituisce AAAA-MM-GG HH: MM: SS
4 julianday (timestring, modificatori ...) Ciò restituisce il numero di giorni trascorsi da mezzogiorno a Greenwich del 24 novembre 4714 a.C.
5 strftime (timestring, modificatori ...) Restituisce la data formattata in base alla stringa di formato specificata come primo argomento formattato secondo i formattatori spiegati di seguito.

Tutte le cinque funzioni di data e ora di cui sopra accettano una stringa di tempo come argomento. La stringa dell'ora è seguita da zero o più modificatori. La funzione strftime () accetta anche una stringa di formato come primo argomento. La sezione seguente fornirà dettagli sui diversi tipi di stringhe di tempo e modificatori.

Stringhe di tempo

Una stringa dell'ora può essere in uno dei seguenti formati:

Sr.No. Stringa temporale Esempio
1 AAAA-MM-GG 2010-12-30
2 AAAA-MM-GG HH: MM 2010-12-30 12:10
3 AAAA-MM-GG HH: MM: SS.SSS 2010-12-30 12: 10: 04.100
4 MM-GG-AAAA HH: MM 30-12-2010 12:10
5 HH: MM 12:10
6 AAAA-MM-GGTHH: MM 2010-12-30 12:10
7 HH: MM: SS 12:10:01
8 AAAAMMGG HHMMSS 20101230 121001
9 adesso 2013-05-07

È possibile utilizzare la "T" come carattere letterale che separa la data e l'ora.

Modificatori

La stringa dell'ora può essere seguita da zero o più modificatori che altereranno la data e / o l'ora restituita da una qualsiasi delle cinque funzioni precedenti. I modificatori vengono applicati da sinistra a destra.

I seguenti modificatori sono disponibili in SQLite:

  • NNN giorni
  • NNN ore
  • Minuti NNN
  • NNN.NNNN secondi
  • NNN mesi
  • NNN anni
  • inizio del mese
  • inizio anno
  • inizio della giornata
  • giorno della settimana N
  • unixepoch
  • localtime
  • utc

Formattatori

SQLite fornisce una funzione molto utile strftime()per formattare qualsiasi data e ora. È possibile utilizzare le seguenti sostituzioni per formattare la data e l'ora.

Sostituzione Descrizione
% d Giorno del mese, 01-31
% f Secondi frazionari, SS.SSS
% H Ora, 00-23
% j Giorno dell'anno, 001-366
% J Numero del giorno giuliano, DDDD.DDDD
% m Mese, 00-12
% M Minuto, 00-59
%S Secondi dal 1970-01-01
%S Secondi, 00-59
% w Giorno della settimana, 0-6 (0 è domenica)
% W Settimana dell'anno, 01-53
% Y Anno, AAAA
%% Simbolo%

Esempi

Proviamo ora vari esempi utilizzando il prompt di SQLite. Il comando seguente calcola la data corrente.

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

Il comando seguente calcola l'ultimo giorno del mese corrente.

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

Il comando seguente calcola la data e l'ora per un dato timestamp UNIX 1092941466.

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

Il comando seguente calcola la data e l'ora per un dato timestamp UNIX 1092941466 e compensa il fuso orario locale.

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

Il seguente comando calcola il timestamp UNIX corrente.

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

Il comando successivo calcola il numero di giorni dalla firma della Dichiarazione di indipendenza degli Stati Uniti.

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

Il seguente comando calcola il numero di secondi trascorsi da un particolare momento nel 2004.

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

Il comando successivo calcola la data del primo martedì di ottobre per l'anno in corso.

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

Il comando seguente calcola il tempo trascorso dall'epoca UNIX in secondi (come strftime ('% s', 'now') eccetto che include la parte frazionaria).

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

Per convertire tra i valori di ora locale e UTC durante la formattazione di una data, utilizzare i modificatori utc o ora locale come segue:

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