Come impostare il formato data per mysql

GiorgioC

Nuovo Utente
5 Apr 2012
21
0
0
Ciao a tutti,
come posso impostare il formato DATE in mysql per utilizzarlo in una query di ricerca?

la mia query è questa:
$risultato = "SELECT DISTINCT * FROM " .$cosaCerca. " WHERE 1=1";
$risultato = $risultato. " and Provincia=" .$doveCerca."'";
$risultato = $risultato. " and DataInizioCorso>='" .$dataDalCerca."'";
$risultato = $risultato. " and DataFineCorso>='" .$dataAlCerca."'";

ovviamente ho saltato qualche riga per far capire che la query si crea a seconda di quello che seleziono.
Il risultato in pagina, se stampo la query è il seguente:

SELECT DISTINCT * FROM wp_vacanze WHERE 1=1 and DataInizioVacanza>='01/04/2012' and DataFineVacanza<='01/04/2012' LIMIT 0,5

peccato che però nel db le mie date sono AAAA/MM/GG
come posso risolvere?
grazie
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
ti serve una funzione per trasformare la data nel formato giuso tipo questa:
PHP:
function reverse_data($data) {
    $data = explode("/", $data);
    $data = array_reverse($data);
    return implode('-', $data);
}

// la richiami passandole la data che vuoi convertire
$data_dal_per_mysql = reverse_data($dataDalCerca);
Non l'ho testata ma dovrebbe funzionare
 

GiorgioC

Nuovo Utente
5 Apr 2012
21
0
0
va bene così?

$cosaCerca = $_POST['cosaCerca'];
$doveCerca = $_POST['doveCerca'];
$dataDalCerca = $_POST['dataDalCerca'];
$dataAlCerca = $_POST['dataAlCerca'];
//$freeText = $_POST['freeText'];

function reverse_data($data) {
$data = explode("/", $data);
$data = array_reverse($data);
return implode('-', $data);
}

// la richiami passandole la data che vuoi convertire
$dataDalCerca = reverse_data($dataDalCerca);
$dataAlCerca = reverse_data($dataAlCerca);
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Si, e poi vai avanti con la tua query

ti consiglio di cambiare queste

PHP:
$dataDalCerca = $_POST['dataDalCerca'];
con

PHP:
// se il post è settato e non è vuoto
if (isset($_POST['dataAlCerca']) && !empty($_POST['dataAlCerca'])) {
    $dataAlCerca = $_POST['dataAlCerca'];
}else{
    // altrimenti setti cmqw la data in modo che la query non vada in errore
    $dataAlCerca = date('d/m/Y');
}
PS stampa sempre la query è un buon metodo per scovare gli errori

aspetta che ho fatto un errore ho modificato qui:
// altrimenti setti cmqw la data in modo che la query non vada in errore
$dataAlCerca = date('d/m/Y');
 
Ultima modifica:

GiorgioC

Nuovo Utente
5 Apr 2012
21
0
0
i controlli li effettuo tutti sotto, e anche la query stampata.

a me servirebbe riottenere le variabili $dataDalCerca e $dataAlCerca come variabili finali.
se effettuo tutti i controlli, continuo ad avere questo formato:

DA: 2028-07-12 AL:2004-08-12
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
forse ho capito

invece che rivalorrizare le variabili prova ad usare la funzione direttamente nella query cosi

PHP:
$risultato = "SELECT DISTINCT * FROM " . $cosaCerca . " WHERE 1=1";
$risultato = $risultato . " and Provincia=" . $doveCerca . "'";
$risultato = $risultato . " and DataInizioCorso>='" . reverse_data($dataDalCerca) . "'";
$risultato = $risultato . " and DataFineCorso>='" . reverse_data($dataAlCerca) . "'";

puoi utilizzare anche questa sintassi per concatenare le stringe

$risultato.= " and etc. etc.";
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
onde evitare che le mie lacune allunghino il post, con cose inutili?
a me non sembrano inutil anzi..

prova con l'ultima risposta che ti ho dato
 

GiorgioC

Nuovo Utente
5 Apr 2012
21
0
0
un po di chiarezza in db come formato data ho DATE
a video se faccio l'echo ho un formato 0000/00/00
se faccio il reverse continua a darmi quest'ultimo formato
 

GiorgioC

Nuovo Utente
5 Apr 2012
21
0
0
allora il problema era nel formato del datepicker e non da db, ho sistemato quello, adesso manda il reverse in pagina.