You already established that following code return the expected (by you) result
FROM Table A a1
LEFT JOIN Table B b1
ON a1.col1 = b1.col1
where a1.DT BETWEEN '03/26/2011' AND '03/26/2999'
Now to explain why the first select returns all row of A:
That's what a left join does : it returns all rows on A and then searches for a row in B with "a1.col1 = b1.col1 and a1.DT BETWEEN '03/26/2011' AND '03/26/2999' AND a1.col1='123456'."
If no such row is found in B, it will still return the A-row with empty (null) fields for B-columns
This technique is even sometimes used as a performance trick.
For example if you know a customer of type<>"T" does not have any insurances you can codeselect * from customer A left join insurance B on A.type = 'T' and a.icust = b.icust
which should avoid a search on insurance when a.type = 'T'
I can explain it to you, but i can not understand it for you.