【问题标题】:Correct date range in SQLSQL 中的正确日期范围
【发布时间】:2011-07-29 13:23:58
【问题描述】:

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

我正在使用条件

to_date('2011-01-01', 'yyyy-mm-dd') 和 to_date('2011-03-31') 之间的 t.logtime

请注意,logtime 是一个日期时间字段。

这是否反映了我想要的?还是我实际上少了 24 小时? 我也可以指定时间,但我希望没有它也能做到。

【问题讨论】:

    标签: datetime plsql


    【解决方案1】:

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

    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) 上使用索引)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      相关资源
      最近更新 更多