Forum >> Programmazione Python >> Database >> Confrontare date con Sqlite

Pagina: 1

Buongiorno a tutti, ogni tanto torno con qualche "problema"; quelle di oggi coinvolge il confronto fra date.
Io ho un archivio che mi viene fornito che ha la date cosi composte: 07/09/2024.

Nelle varie funzioni di confronto x query ho visto esempi solo con date: 2024-09-07

Come potrei fare il confronto con le date fornite ? Dovrei scomporre la data e ricomporla all'americana per poi fare il confronto ?

O sarebbe meglio rilavorare tutto il file .csv convertendo tutte le date e poi in un secondo tempo eseguire la query di confronto ?

Il file di compone di 16 colonne per un minimo di almeno 50.000 righe con possibilità di arrivo alle 70/80.000.


Come potrei ottimizzare al meglio la scrematura per un range di date ?


Grazie

------
Alberto
Certo sai giò che sqlite ha uno scarso supporto per i dati temporali ... però non è difficile trattare direttamente stringhe con dati in formato "dd/mm/aaaa", basta utilizzare la funzione sqlite substr e creare una stringa ordinata per anno-mese-giorno ... p.e, ho creato una semplicissima tavola con date di eventi alla rinfusa, per poi ordinarli e selezionare una "data limite" utilizzando tali considerazioni, vedi sotto una sessione in shell sqlite :

sqlite> .schema eventi
CREATE TABLE eventi (
data TEXT,
evento TEXT);
sqlite> select * from eventi;
25/06/1876|battaglia del Little Bighorn
06/04/1453|inizio assedio Costantinopoli
03/08/1492|Cristoforo Colombo parte sa Palos
06/06/1944|Sbarco in Normandia
sqlite> SELECT * FROM eventi
   ...> ORDER BY (substr(data, 7, 4) || '-' || substr(data, 4, 2) || '-' || substr(data, 1, 2));
06/04/1453|inizio assedio Costantinopoli
03/08/1492|Cristoforo Colombo parte sa Palos
25/06/1876|battaglia del Little Bighorn
06/06/1944|Sbarco in Normandia
sqlite> SELECT * FROM eventi
   ...> WHERE (substr(data, 7, 4) || '-' || substr(data, 4, 2) || '-' || substr(data, 1, 2)) > '1500-01-01';
25/06/1876|battaglia del Little Bighorn
06/06/1944|Sbarco in Normandia
sqlite>





Venendo al Tuo "ottimizzare", non ne ho idea, non avendo presenti tanto i dati quanto il contesto ... certo che sarebbe bene registrare i dati temporali direttamente secondo le modalità previste in sqlite, semplificherebbe le query.




CIAO

Fatti non foste a viver come bruti...
Certo sai giò che sqlite ha uno scarso supporto per i dati temporali ... però non è difficile trattare direttamente stringhe con dati in formato "dd/mm/aaaa", basta utilizzare la funzione sqlite substr e creare una stringa ordinata per anno-mese-giorno ... p.e, ho creato una semplicissima tavola con date di eventi alla rinfusa, per poi ordinarli e selezionare una "data limite" utilizzando tali considerazioni, vedi sotto una sessione in shell sqlite :

sqlite> .schema eventi
CREATE TABLE eventi (
data TEXT,
evento TEXT);
sqlite> select * from eventi;
25/06/1876|battaglia del Little Bighorn
06/04/1453|inizio assedio Costantinopoli
03/08/1492|Cristoforo Colombo parte sa Palos
06/06/1944|Sbarco in Normandia
sqlite> SELECT * FROM eventi
   ...> ORDER BY (substr(data, 7, 4) || '-' || substr(data, 4, 2) || '-' || substr(data, 1, 2));
06/04/1453|inizio assedio Costantinopoli
03/08/1492|Cristoforo Colombo parte sa Palos
25/06/1876|battaglia del Little Bighorn
06/06/1944|Sbarco in Normandia
sqlite> SELECT * FROM eventi
   ...> WHERE (substr(data, 7, 4) || '-' || substr(data, 4, 2) || '-' || substr(data, 1, 2)) > '1500-01-01';
25/06/1876|battaglia del Little Bighorn
06/06/1944|Sbarco in Normandia
sqlite>
geometry dash meltdown

Venendo al Tuo "ottimizzare", non ne ho idea, non avendo presenti tanto i dati quanto il contesto ... certo che sarebbe bene registrare i dati temporali direttamente secondo le modalità previste in sqlite, semplificherebbe le query.


CIAO
Ho fatto cónulenza e mi sono comportato male


--- Ultima modifica di DouglasClements in data 2024-11-22 03:36:57 ---


Pagina: 1



Esegui il login per scrivere una risposta.