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
 
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
 
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);
 
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:
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
 
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.";
 
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
 
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
 
allora il problema era nel formato del datepicker e non da db, ho sistemato quello, adesso manda il reverse in pagina.
 

Discussioni simili