正确的SQL日期范围



这让我有点偏执,但我正在检索一段时间内的一组记录,例如,从2011年1月1日(从午夜开始)到2011年3月31日(截至11:59:59 PM的所有记录)

我使用条件

<>之前to_date('2011-01-01', 'yyyy-mm-dd')和to_date('2011-03-31')之间的日志时间之前

注意logtime是一个datetime字段

这是否反映了我想要的?还是我真的错过了24小时少一秒?我也可以指定时间,但我希望我可以在没有它的情况下完成。

是的,你几乎错过了最后一天的所有时间。有各种各样的解决方案;最简单的可能是:

t.logtime >= to_date('2011-01-01', 'yyyy-mm-dd')
and t.logtime < to_date('2011-04-01', 'yyyy-mm-dd')

我也会使用ANSI日期文本语法:

t.logtime >= date '2011-01-01'
and t.logtime < date '2011-04-01'

trunc(t.logtime) between date '2011-01-01' and date '2011-03-31'

不能再在logtime上使用索引(尽管可以在trunc(logtime)上使用索引)。

相关内容

  • 没有找到相关文章

最新更新