Friday, November 13, 2009

Oracle sql-query data based on even hours

A simple oracle query data based on even hours. here is a simple example.
Table name: Tab1
  • IDATE
  • RINDEX
  • A0101
  • A0102
  • A0103
  • A0104
  • A0105
  • A0106
  • A0107
  • A0108
Sql-query:
SELECT TO_CHAR(IDATE,'dd-mm-yy HH24:MI'),
A0101,
A0102,
A0103,
A0104,
A0105,
A0106,
A0107,
A0108
FROM Tab1 WHERE (MOD(To_Number(TO_CHAR(IDATE,'HH24')),2))=0 AND IDATE BETWEEN to_date(inDte1,'dd-mm-yyyy HH24:MI:SS') AND to_date(inDte2,'dd-mm-yyyy HH24:MI:SS') ORDER BY RINDEX;

Here (MOD(To_Number(TO_CHAR(IDATE,'HH24')),2))=0 is doing that selection from available data. First get the hour's value as string then convert it into a Number and apply MOD function.