2

I have a mysql query like following, Column time contains date in long format.

SELECT FROM_UNIXTIME(CEILING( Time/('20160'*1000)) *'20160', '%Y:%m:%d %h:%i') AS Time,
SUM(CreatedInstanceCount) AS CreatedInstanceCount , SUM(InitializedInstanceCount) AS InitializedInstanceCount , 
SUM(ActiveInstanceCount) AS ActiveInstanceCount, 
SUM(TerminatedInstanceCount) AS TerminatedInstanceCount 
FROM MEMBER_COUNT WHERE ApplicationId='test' 
AND Time > ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000-'604800000' 
AND Time <= ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000) 
GROUP BY FROM_UNIXTIME( CEILING( Time/('20160'*1000)) *'20160', '%Y:%m:%d %h:%i'), ApplicationId

So far my oracle query is like this but the results are not same.

SELECT to_char(to_date('1970-01-01 00','yyyy-mm-dd hh24:mi') +(time)/1000/60/60/24 , 'yyyy-mm-dd HH24:MI') "Time", SUM(CreatedInstanceCount) 
AS "CreatedInstanceCount", SUM(InitializedInstanceCount) AS "InitializedInstanceCount", SUM(ActiveInstanceCount) AS "ActiveInstanceCount", 
SUM(TerminatedInstanceCount) AS "TerminatedInstanceCount" ,ApplicationId
FROM MEMBER_COUNT 
WHERE ApplicationId='test' AND to_date('1970-01-01 00','yyyy-mm-dd HH24:MI') +(time)/1000/60/60/24 between sysdate-7 and SYSDATE 
GROUP BY to_char(to_date('1970-01-01 00','yyyy-mm-dd hh24:mi') +(time)/1000/60/60/24 , 'yyyy-mm-dd HH24:MI'), ApplicationId
order by to_char(to_date('1970-01-01 00','yyyy-mm-dd hh24:mi') +(time)/1000/60/60/24 , 'yyyy-mm-dd HH24:MI') ;

This is my create table statement:

CREATE TABLE MEMBER_COUNT(Time number(20), ApplicationId VARCHAR2(150), ClusterAlias VARCHAR2(150), CreatedInstanceCount int, InitializedInstanceCount int, ActiveInstanceCount int, TerminatedInstanceCount int);

The problem is no of rows returned by oracle query are higher than the mysql query. I believe this has to do something with CEILING function.

Please help.

asked Jan 5, 2016 at 16:11
1
  • @Anuruddha Please create an example set of data on sqlfiddle.com Commented Jan 5, 2016 at 16:30

1 Answer 1

0

I found the query:

SELECT TO_CHAR(to_date('1970-01-01 00','yyyy-mm-dd hh24:mi') +(ceil( TIME/ (20160 * 1000)) * 20160 )/60/60/24 , 'yyyy-mm-dd HH24:MI') "Time",
 SUM(CreatedInstanceCount) AS "CreatedInstanceCount",
 SUM(InitializedInstanceCount) AS "InitializedInstanceCount",
 SUM(ActiveInstanceCount) AS "ActiveInstanceCount",
 SUM(TerminatedInstanceCount) AS "TerminatedInstanceCount"
FROM MEMBER_COUNT
WHERE ApplicationId='wso2is-500-application'
AND to_date('1970-01-01 00','yyyy-mm-dd HH24:MI') +(ceil( TIME/ (20160 * 1000)) * 20160 )/60/60/24 BETWEEN sysdate-7 AND SYSDATE
GROUP BY TO_CHAR(to_date('1970-01-01 00','yyyy-mm-dd hh24:mi') +(ceil( TIME/ (20160 * 1000)) * 20160 )/60/60/24 , 'yyyy-mm-dd HH24:MI'),
 ApplicationId
ORDER BY TO_CHAR(to_date('1970-01-01 00','yyyy-mm-dd hh24:mi') +(ceil( TIME/ (20160 * 1000)) * 20160 )/60/60/24 , 'yyyy-mm-dd HH24:MI') ;
answered Jan 5, 2016 at 17:12

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.