No no il between funziona bene, io la data la converto prima, è quando è solo un uno , mi spiego allora se devo estrarre la differenza tra due date :

$sqlSearch .=" AND riparazioni.dataingresso BETWEEN CAST('{$data}' AS DATETIME)AND CAST('{$data2}' AS DATETIME)";


funge perfettamente, ma nella seconda impotesi:

quando la data è precisa che non la estrae perchè, il form invia la data esatta ma senza ora e minuti, e quindi non la estrae, ho provato a fare così

$sqlSearch .= " AND riparazioni.dataingresso = CAST('{$data}' AS DATE)"; dicendogli di estrarre solo la data ma non va , mentre sopra quando deve estrarre intervalli tra due date si