Я согласен с предложением @Gordon, однако он не отвечает на вопрос, и в этом случае неявное преобразование отсутствует, вы сравниваете 2 строки.Вы получаете меньше значений в первом сравнении, потому что вы выпускаете все значения -31.Вы можете запустить это, чтобы проверить ..
select "2013-05-31 00:00:00.0" <= '2013-05-31' ;
- false
select "2013-05-30 00:00:00.0" <= '2013-05-31' ;
- true
Это потому, что вы проводите лексикографическое сравнение ...и на самом деле '2013-05-31'
меньше, чем "2013-05-31 00:00:00.0"
Если бы я предположил о менее дорогостоящем способе выполнения этого сравнения, я бы сказал, что это подстрок и сравнение (регулярные выражения обычно дороги и приводятся на сегодняшний день).быть так же).
select substr("2013-05-31 00:00:00.0",1,10) <= '2013-05-31' ;