SELECT a.* FROM a a LEFT JOIN b b on a.id = b.id WHERE b.id is null
UNION
SELECT b.* FROM b b LEFT JOIN a a on a.id = b.id WHERE a.id is null
SELECT * FROM (
SELECT a.date as date, IFNULL(a.v1,0) as v1, IFNULL(b.v2,0) as v2 FROM a LEFT JOIN b on a.date = b.date
UNION
SELECT b.date as date, IFNULL(a.v1,0) as v1, IFNULL(b.v2,0) as v2 FROM b LEFT JOIN a on b.date = a.date) c
ORDER BY c.date asc