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