SELECT mysql su parametro data

  • Creatore Discussione Creatore Discussione iw8ffg
  • Data di inizio Data di inizio

iw8ffg

Nuovo Utente
3 Apr 2016
11
0
1
Ciao a tutti,
mi servirebbe un aiuto perchè sto diventando matto; ho un database mysql con il quale vengono registrati i turni nel formato AAAA-MM-GG effettuati da ogni singolo volontario della mia associazione e ho bisogno di creare una query con il quale mi mostra a video quei volontari che NON hanno effettuato turni negli ultimi 2 mesi.
Qualcuno mi riesce ad aiutare??????

Grazie 1000 in anticipo
 
Ultima modifica:
non hai pubblicato le tabelle, per cui accontentati degli esempi,
la query,
al posto delle date in chiaro puoi mettere le variabili php $myDatePast e $myDateToday
"ma_aggior" è la colonna nel mio db che ho usato per il test
devi comunque aggiustarla per estrarre ciò che ti serve
Codice:
select distinct ma_aggior from matrice
where ma_aggior NOT between '1990-08-13 00:00:00' and '2014-02-10 23:59:59'
order by ma_aggior

come calcolare le date usando la data di oggi come riferimento,
PHP:
$myDate = new DateTime();
$myDateToday = $myDate->format('Y-m-d 23:59:59');
$myDatePast  = $myDate->modify('-2 months +1 days');
$myDatePast  = $myDatePast->format('Y-m-d 00:00:00');
echo $myDatePast." - ".$myDateToday."<br /> <br />";

il risultato,
2016-02-05 00:00:00 - 2016-04-04 23:59:59

se, nel tuo database, la data è priva dell'ora, elimina dal "format" i valori
 
Ciao e grazie per la risposta;
ho provato a lanciare la query e mi restituisce come risulta solo delle date senza farmi vedere i nomi di chi corrisponde.
il DB e formato da queste table:
1 tabella "Anagrafica" dove sono presenti i campi "ID" e "Nome & Cognome"
1 tabella "Turni" dove sono presenti i campi "ID" "Nome & Cognome" e "Data"
Ho configurato già una query che mi riporta tutti i turni fatti dal singolo volontario ma quello che mi interessa e che a video mi compaiano solo i volontari che l'ultimo turno fatto risale ad una data antecedente ai 2 mesi.
Di seguito ti descrivo la struttura del DB
Codice:
mysql> describe Anagrafica
    -> ;
+----------------+-------------+------+-----+---------+----------------+
| Field          | Type        | Null | Key | Default | Extra          |
+----------------+-------------+------+-----+---------+----------------+
| ID             | int(11)     | NO   | PRI | NULL    | auto_increment |
| Cognome & Nome | varchar(60) | NO   |     | NULL    |                |
| Attivo         | varchar(2)  | NO   |     | NULL    |                |
+----------------+-------------+------+-----+---------+----------------+

mysql> describe Turni;
+----------------+-------------+------+-----+---------+----------------+
| Field          | Type        | Null | Key | Default | Extra          |
+----------------+-------------+------+-----+---------+----------------+
| ID             | int(11)     | NO   | PRI | NULL    | auto_increment |
| Cognome & Nome | varchar(60) | NO   |     | NULL    |                |
| Data           | date        | NO   |     | NULL    |                |
+----------------+-------------+------+-----+---------+----------------+
 
in questo modo ti ritorna anche l'ultimo servizio,
PHP:
select ID, 'Cognome & Nome', max(Data) from turni
where Data < '2016-02-05'
group by 'Cognome & Nome'
order by 'Cognome & Nome'
 
Ciao grazie mille in anticipo per l'aiuto ho provato a lanciare questa query e mi restituisce questo risultato
Codice:
ID	Cognome & Nome	MAX( Data )
4	Cognome & Nome	2016-02-10
In poche parole non mostra il valore del Cognome & Nome..... :(
 
scusa ma, usare i nomi dei campi in quella forma vuole dire farsi male da soli,
sarebbe stato meglio un "CognomeNome"
in ogni caso usa gli apici "storti" (non li uso mai e non so come si chiamano)
`Cognome & Nome`
 

Discussioni simili