si puoi anche usare date_format, come puoi vedere qua in PHP e qua per MySQL.
L'errore che tu fai però è nella query: non hai messo subito dopo il SELECT un cmapo da trattare come data e non è corretta nella forma e sintassi. Io ti consiglio di fare così: prima immetti la data da verificare
Codice PHP:
data (dd/mm/aaaa): <input type="text" name="data" />
poi ricarichi la pagina e la converti in formato standard come ho scritto prima e scrivi la query
Codice PHP:
$data = $_POST['data'];
$arr = explode('-', $data);
$data = date('Y-m-g');
$query = "select * FROM tabella2 WHERE data = '" . $data . "' AS giorno, SUBSTRING('" . $data . "', 6, 2) AS mese,";
$query .= " avg(temp),avg(umidita),avg(20-(temp)) as gradigiorno from TABELLA2";
$query .= " AND DATE('" . $data . "') BETWEEN '" . $data1 . "' AND '" . $data2 . "' GROUP BY giorno ORDER BY date DESC LIMIT 1000";
$result=mysql_query($query);