vorrei aggiungere alcune informazioni sull'utilizzo SQLite data e ora con UNIX epoch time:
L'epoca UNIX era 00:00:00 1970-01-01, cioè la mezzanotte del 1 gennaio 1970. La l'ora corrente su macchine UNIX (come quelle che eseguono Linux) viene misurata in secondi da quel momento.
SQLite supporta questo periodo storico e ho trovato molto utile utilizzarlo come formato per un campo DateTime in SQLite.
Concretamente, supponiamo di voler avere una tabella degli eventi, per eventi come i concerti ecc. Voglio un campo fromDateTime da memorizzare all'avvio dell'evento.Posso farlo impostando la fromDateTime presentato al tipo intero, come ad esempio:
CREATE TABLE IF NOT EXISTS Event(
eventID INTEGER PRIMARY KEY,
name TEXT,
ratingOutOf10 REAL,
numberOfRatings INTEGER,
category TEXT,
venue TEXT,
fromDateTime INTEGER,
description TEXT,
pricesList TEXT,
termsAndConditions TEXT
);
Ora, veniamo al l'uso dell'epoca UNIX con campi SQLite DateTime:
Basic
select strftime('%s', '2016-01-01 00:10:11'); --returns 1451607012
select datetime(1451607012, 'unixepoch'); --returns 2016-01-01 00:10:11
select datetime(1451607012, 'unixepoch', 'localtime'); --returns 2016-01-01 05:40:11 i.e. local time (in India, this is +5:30).
Only dates and/or times:
select strftime('%s', '2016-01-01'); --returns 1451606400
select strftime('%s', '2016-01-01 16:00'); --returns 1451664000
select date(-11168899200, 'unixepoch'); --returns 1616-01-27
select time(-11168899200, 'unixepoch'); --returns 08:00:00
Other stuff:
select strftime('%d-%m-%Y %H:%M:%S', '2012-09-13 12:44:22') --returns 13-09-2012 12:44:22
Ora, ecco un esempio di utilizzo di quanto sopra con il nostro tavolo evento:
EXAMPLE:
insert into Event
(name, ratingOutOf10, numberOfRatings, category, venue, fromDateTime, description, pricesList, termsAndConditions)
VALUES
('Disco', '3.4', '45', 'Adventure; Music;', 'Bombay Hall', strftime('%s','2016-01-27 20:30:50'), 'A dance party', 'Normal: Rs. 50', 'Items lost will not be the concern of the venue host.');
insert into Event
(name, ratingOutOf10, numberOfRatings, category, venue, fromDateTime, description, pricesList, termsAndConditions)
VALUES
('Trekking', '4.1', '100', 'Outdoors;', 'Sanjay Gandhi National Park', strftime('%s','2016-01-27 08:30'), 'A trek through the wilderness', 'Normal: Rs. 0', 'You must be 18 or more and sign a release.');
select * from event where fromDateTime > strftime('%s','2016-01-27 20:30:49');
mi piace questa soluzione perché è davvero facile lavorare con i linguaggi di programmazione, senza troppo pensare dei vari formati coinvolti nella I tipi di dati di DATA, ORA, DATETIME, ecc. Di SQLite.
Vedere la documentazione su https://www.sqlite.org/lang_datefunc.html per i dettagli di 'strftime'. –
Ho controllato il documentario e ho provato così tante cose con esso ... sono solo confuso su come mettere una query esatta per questo perché nel mio database sto avendo diffrent data format e sqlite strftime function che ne preleva una diversa. – vishalg
@vishalg forse si desidera aggiornare la domanda con informazioni dettagliate, meglio con un valore di esempio del proprio database. –