带日期的 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')...
我 运行 下面这两个脚本给出了两个不同的结果。第一个不包括 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')...