Prelevare i record che appartengono al giorno più vecchio del mese.

criccroc

Utente Attivo
7 Gen 2011
44
0
6
Ho la necessità di prelevare da una tabella soltanto i record che appartengono al giorno più vecchio del mese. Faccio un esempio:

Data
18/12/04
*31/12/04
14/01/05
18/01/05
*25/01/05
04/02/05
11/02/05
*19/02/05
01/03/05
*16/03/05
*01/04/05
01/08/05
*28/08/05

in questo esempio ho la necessità quindi di prelevare soltanto le date con * (ovvero 6 record).

Qualcuno sa suggerirmi l'SQL da utilizzare? Grazie.
 

marino51

Utente Attivo
28 Feb 2013
3.051
193
63
Lombardia
Codice:
select max(DateStr) as DateStr from DateTab
group by RIGHT(DateStr, 2)+SUBSTRING(DateStr,3,3)

Cattura.PNG
 

criccroc

Utente Attivo
7 Gen 2011
44
0
6
Mi sono dimenticato di aggiungere che..

1) devo selezionare tutti i campi del database (non solo la data)
2) l'anno e' in formato americano (Es: 2014-11-27).

Nel frattempo sto provando la select modificando i parametri. Vediamo se ci riesco da solo, ma se nel frattempo si ha la soluzione sarebbe meglio :) GRAZIE.
 

criccroc

Utente Attivo
7 Gen 2011
44
0
6
Per ora ho risolto il filtraggio dei record con la data americana utilizzando questo comando:

select max(data) as data from NomeTabella group by LEFT(data, 7)

Difatti, cosi facendo visualizzo solo le date dei record che mi interessano. Mi manca solo di modificare l'sql in modo di poter vedere TUTTI I CAMPI.
 

marino51

Utente Attivo
28 Feb 2013
3.051
193
63
Lombardia
si "left" funziona con mysql su un campo data, non con ms sql, in ogni caso prova
Codice:
select * from DateTab a 
inner join 
(
  select max(DateDt) as DateDt from DateTab group by month(DateDt), year(DateDt)
) b
on a.DateDt=b.DateDt

non perdere per strada "a" e "b" altrimenti non funziona
 

criccroc

Utente Attivo
7 Gen 2011
44
0
6
Perdonami marino51, preferirei semplicemente modificare l'sql che ti ho postato per ultimo (che funziona ed e' piu chiaro):
Codice:
select max(data) as data from NomeTabella group by LEFT(data, 7)

aggiungendo la parte mancante tipo: select * where... ????
 

marino51

Utente Attivo
28 Feb 2013
3.051
193
63
Lombardia
no no ... sostituisci il mio "group by month, year" con il tuo "left"
poi ... quella è la query
(non puoi mixare campi raggruppati con campi non ... e select max(DateDt) ... restituisce più di un record)

ps DateDt è di fatto DateStr, solo, in formato "datetime" nel mio db
 
Ultima modifica:

criccroc

Utente Attivo
7 Gen 2011
44
0
6
OK marino51, grazie di nuovo!
cosi funziona:
Codice:
select * from NomeTabella a inner join (select max(data) as data from NomeTabella group by LEFT(data, 7)) b on a.data=b.data
 

criccroc

Utente Attivo
7 Gen 2011
44
0
6
Ora qualcuno mi uccide :evil::evil::evil:

La mia sql e' leggermente più complessa. In origine era questa:

Codice:
$sql = "SELECT * FROM NomeTabella WHERE (data BETWEEN '$data_inizio' AND '$data_fine') AND (NumSet = 9) ORDER BY id DESC LIMIT 10;

quindi.. vengono filtrati in questo caso i record compresi tra una data iniziale e una finale, Numero settimana = 9, in ordine di ID, limitato a 10 record.

Poi ho modificato la parte NumSet filtrando solo le date dell'ultimo mese, con la query di prima.

Ora pero' devo aggiungere anche questi altri parametri. SIGH SIGH :(
 

criccroc

Utente Attivo
7 Gen 2011
44
0
6
mi manca solo il WHERE
Codice:
WHERE (data BETWEEN '1999-01-01' AND '2012-03-06')
ed ho terminato.

Per ora sono arrivato qui:

Codice:
$sql= "SELECT * FROM NomeTabella a INNER JOIN (SELECT MAX(data) AS data from NomeTabella group by LEFT(data, 7)) b on a.data=b.data ORDER BY id DESC LIMIT 100";
 

criccroc

Utente Attivo
7 Gen 2011
44
0
6
Ok.. finalmente problema risolto:
Codice:
$sql = "SELECT * FROM NomeTabella a INNER JOIN (SELECT MAX(data) AS data FROM NomeTabella WHERE (data BETWEEN '1999-01-01' AND '2000-03-06') GROUP BY LEFT(data, 7)) b ON a.data=b.data ORDER BY id DESC LIMIT 100";

Cosi facendo ho filtrato tutte le date del giorno più vecchio del mese, compresi tra un certo periodo di data, ordinate per codice, limitando a 100 il numero dei record selezionati. GRAZIE INFINITE!
 
Discussioni simili
Autore Titolo Forum Risposte Data
R [PHP] Prelevare dati dal più recente PHP 6
J Prelevare dati dal db Mysql PHP 9
trattorino [PHP] prelevare minuti da date confrontate PHP 2
trattorino [PHP] Prelevare contenuto PHP 1
trattorino [PHP] prelevare solo div con id PHP 1
M Creazione codice html per far prelevare un banner HTML e CSS 3
R Come prelevare valori da Feed Rss ? aiuto Javascript 0
E prelevare dato da una tabella ed inserila in un altra PHP 6
ivarello Prelevare contenuto DIV di un'altra pagina PHP 5
P Prelevare il valore da un radio button con name dinamico!! PHP 2
P Script per prelevare contenuti dalle pagine web PHP 1
E Prelevare dati diversi da 3 tabelle con gli stessi campi e accodarli per data PHP 1
F Prelevare un valore dall'oggetto selcet Javascript 4
F prelevare valori da una forse array PHP 7
Fossa Prelevare risultati da siti esterni (API?) PHP 9
B Metodo POST prelevare VALUE da tasto SUBMIT PHP 2
T [sql] Prelevare le ultime N righe? Database 3
F Prelevare variabile di ritorno da Google Maps API PHP 0
helpdesk Prelevare dati riga per riga PHP 20
A Prelevare i dati in base al titolo selezionato (era Aiuto!) PHP 1
I Prelevare dati PHP 6
I Prelevare dati database a caso PHP 4
I Prelevare dati da due tabelle PHP 2
catellostefano prelevare dati da tabella mysql PHP 6
catellostefano Prelevare variabile da un altra pagina php PHP 2
I Prelevare variabile da url PHP 3
C prelevare immagine e caricarla tramite ftp in php PHP 2
U Prelevare dati da Array o $_FILES PHP 7
M Prelevare *.wmv da internet Webdesign e Grafica 1
D Prelevare da un db i primi caratteri di un articolo. Classic ASP 1
R Prelevare dati da un file xml Ajax 3
L Prelevare testo da campo di testo Classic ASP 2
B prelevare cookies per fini di sviluppo PHP 2
ElfoDelBasket [php-mysql] Prelevare i valori dai campi Enum/Set PHP 5
P Come posso prelevare keyascii? Javascript 1
T Come faccio ad inserire file.pdf da far prelevare dal mio sito web? SEO e Posizionamento 0
G notifiche dekstop/mobile ogni volta che record è inserito/eliminato/aggiornato PHP 0
P Pagina modifica record che non funziona PHP 0
S Selezionare ultimo record di una sotto query MySQL 26
A Tabella con bottoni per aggiornamento record PHP 6
S Differenza date record successivi MS Access 7
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S Aggiornamento lista record Database 2
M Esportazione in CSV, salta il primo record PHP 4
T foreach e fetchAll dove recupero solo l'ultimo record PHP 5
A Raggruppare record con stessa data PHP 13
R Scorporare array e recuperare record tabella PHP 10
Tommy03 Select in ordine per numero di record MySQL 7
L Creazione di 2 o più record PHP 6
mazman mysqli_query() mi ritorna un array vuoto anche se presente un record nella tabella PHP 13

Discussioni simili