带日期的 between 和 like 函数

The between and like functions with dates

我 运行 下面这两个脚本给出了两个不同的结果。第一个不包括 4 月 30 日的数据,但后者包括。我正在使用甲骨文 sql。有人可以帮忙吗?

select distinct * from a where (m_date between'01-MAY-17' AND '30-MAY-17');

select distinct * from a where m_date like '%-MAY-17';

我使用了 to_date 函数并且有效:

select 与'01-MAY-17' AND '30-MAY-17'

之间的 to_date (m_date) 不同 *

这产生了与 like 子句相同的结果:

select 与 m_date like '%-MAY-17'

不同 *

你的 between 子句

select distinct * from a where to_date (m_date) between'01-MAY-17' AND '30-MAY-17'

等同于说(伪代码)

...where to_date (m_date) between '01-may-17 00:00:00' AND '30-may-17 00:00:00'...

这排除了 5/30 的日期值,其中有除上午 12 点以外的任何时间元素。 (另外,5 月确实有 31 天)。

假设 m_date 是日期数据类型,并且假设您想要 5 月份的所有值,那么执行以下操作会更正确。

... where m_date >= to_date('01-may-17') and m_date < to_date('01-jun-17')...