I had a similar issue, where the date string had been inconsistently entered and so the length of the months, days and years were not consistent. Here is what I did to convert strings inconsistently formatted as M/D/YYYY to dates consistently formatted to YYYY-MM-DD:
SELECT "DISP DATE", DATE(year||'-'||month||'-'||day) as dt_frmtd
FROM
(
SELECT *
, CASE WHEN LENGTH(substr("DISP DATE", 1, instr("DISP DATE",'/')-1)) = 2
THEN substr("DISP DATE", 1, instr("DISP DATE",'/')-1)
ELSE '0'|| substr("DISP DATE", 1, instr("DISP DATE",'/')-1)
END as month
, CASE WHEN LENGTH(substr(substr("DISP DATE", instr("DISP DATE",'/')+1), 1, instr(substr("DISP DATE", instr("DISP DATE",'/')+1),'/')-1)) = 2
THEN substr(substr("DISP DATE", instr("DISP DATE",'/')+1), 1, instr(substr("DISP DATE", instr("DISP DATE",'/')+1),'/')-1)
ELSE '0'|| substr(substr("DISP DATE", instr("DISP DATE",'/')+1), 1, instr(substr("DISP DATE", instr("DISP DATE",'/')+1),'/')-1)
END AS day
, CASE WHEN LENGTH(substr(substr("DISP DATE", instr("DISP DATE",'/')+1), instr(substr("DISP DATE", instr("DISP DATE",'/')+1),'/')+1)) = 4
THEN substr(substr("DISP DATE", instr("DISP DATE",'/')+1), instr(substr("DISP DATE", instr("DISP DATE",'/')+1),'/')+1)
ELSE '20'|| substr(substr("DISP DATE", instr("DISP DATE",'/')+1), instr(substr("DISP DATE", instr("DISP DATE",'/')+1),'/')+1)
END AS year
FROM DISP
)