0

如何在我的 SQL 调用中表示 07/01/2013 - 09/30/2013 日期范围内的特定时间(从 0500 小时 - 0600 小时)?

我想使用 MOPACTIVITY.MOPSTART 字段。此示例显示了从 07/01 到 09/30 的所有内容。我只需要在同一日期范围内从 0500hrs 到 0600hrs 的那些。

谢谢!

FROM MOPUSER.MOPACTIVITY
WHERE TO_CHAR(MOPACTIVITY.MOPSTART, 'yyyy-mm-dd hh24:mi') BETWEEN '2013-07-01 00:00:01' AND '2013-09-30 23:59:59'
4

3 回答 3

3

做两次比较,一次比较日期,一次比较时间:

FROM MOPUSER.MOPACTIVITY
WHERE TO_CHAR(MOPACTIVITY.MOPSTART, 'yyyy-mm-dd') BETWEEN '2013-07-01' AND '2013-09-30' and
      TO_CHAR(MOPACTIVITY.MOPSTART, 'hh24:mi') BETWEEN '05:00' AND '05:59'

您还可以使用以下方法简化第二个条件hour()

FROM MOPUSER.MOPACTIVITY
WHERE TO_CHAR(MOPACTIVITY.MOPSTART, 'yyyy-mm-dd') BETWEEN '2013-07-01' AND '2013-09-30' and
      hour(MOPACTIVITY.MOPSTART) = 5
于 2013-07-02T14:47:19.017 回答
0

我是怎么做到的。我更喜欢@Gordon Linoff 的回答!

SELECT MOPACTIVITY.MOPID ,
TO_CHAR(MOPACTIVITY.MOPSTART, 'yyyy-mm-dd hh24:mi') AS MOPSTART_DATE,
TO_CHAR(MOPACTIVITY.MOPEND, 'yyyy-mm-dd hh24:mi') AS MOPEND_DATE,
MOPACTIVITY.MOPCREATOR,
MOPACTIVITY.MOPIMPLEMENTOR
FROM MOPUSER.MOPACTIVITY
WHERE TO_CHAR(MOPACTIVITY.MOPSTART, 'yyyy-mm-dd') BETWEEN '2013-07-01' AND '2013-09-30'
AND to_number(to_char(MOPACTIVITY.MOPSTART, 'sssss')) between 18000 and 21600

Order by MOPACTIVITY.MOPID
于 2013-07-02T14:53:33.717 回答
0

一种可能利用索引(如果有的话)的MOPSTART方法是这样的:

WHERE
    MOPACTIVITY.MOPSTART >= DATE '2013-07-01'
    AND
    MOPACTIVITY.MOPSTART < DATE '2013-09-30' + 1
    AND
    TO_CHAR(MOPACTIVITY.MOPSTART, 'HH24') = '05'

这假设您不想包含 06:00。

于 2013-07-02T16:01:58.063 回答