Stai filtrando tc_date_transaction che filtra tutti i valori nulli in questo campo, anche quelli generati dall'outer-join e quindi vanifica il suo scopo. Sposta il filtro "tc_date_transaction ="17/06/2010"" nella clausola di unione e funzionerà.
SELECT *
FROM employee LEFT OUTER JOIN timecard
ON employee.employee_id = timecard.employee_id and tc_date_transaction = "17/06/2010";
oppure scrivi
SELECT *
FROM employee LEFT OUTER JOIN timecard
ON employee.employee_id = timecard.employee_id
where (tc_date_transaction = "17/06/2010" or tc_date_transaction is null);