It's probably best to use two queries here...one for the first and one for the last...unless you have not very many records, but I'll assume it's grown all the time...
// select the first - returns one record
"SELECT * FROM table ORDER BY date ASC LIMIT 1"
// select the last - returns one record
"SELECT * FROM table ORDER BY date DESC LIMIT 1"
However, it is also possible that you could have two dates that are the same...so perhaps you should also store time information as well - 0000-00-00 00:00:00.