2016-03-28 27 views
0

我有以下列。查询返回时间戳范围内的记录的平均值

-READING_DATE    timestamp - in '01-JAN-16 12.00.00.000000000 AM' format  


-DISCHARGE_M3PERSEC   number 

我怎么能每天平均日流量为日期范围(至3月),包括第一天(1月1日)到最后一天(3月13日)。

此外,我还需要查找小时平均值和月平均值。

谢谢。

---更新:以下查询导致错误ORA-01855 AM或PM需要。

SELECT TRUNC(READING_DATE) AS READING_DATE, 
    AVG(DISCHARGE_M3PERSEC) AS DISCHARGE 
    FROM HYDROMETRIC_GUELPH 
    WHERE READING_DATE 
    BETWEEN TO_TIMESTAMP('01-JAN-16 12.00.00.000000000 AM','DD-MON-YY HH.MI.SSxFF AM') 
    AND TO_TIMESTAMP('13-MAR-16 05.30.00.00.000000000 PM','DD-MON-YY HH.MI.SSxFF PM') 
GROUP BY TRUNC(READING_DATE); 
+0

您已尝试过哪些内容? –

+0

查看上面的更新 – chris

+0

这可能是相当可观的吗? http://stackoverflow.com/questions/9664231/ora-01855-am-am-or-pm-pm-required –

回答

0

该查询运行正常,你只是在TO_TIMESTAMP中有一个愚蠢的错字。你有时间05分钟30,然后你有00组TWICE(几秒钟?)只需从TO_TIMESTAMP删除第二组及其时间段(00.),并且您有查询。如果您需要更多帮助,请回复。

+0

不幸的是,同样的错误发生的数据是在那种格式 – chris

+0

不知道你明白。应该是:05.30.00.000000。相反,你有一个额外的00.就像这样:05.30.00.00.000000。你有五组数字分隔四个时期,而不是四个组分隔三个时期。 – mathguy

+0

你说得对。谢谢 !!!总是这些错别字.. – chris

0

时间戳没有格式。您可以使用ANSI时间戳文字来避免任何格式和语言/区域设置问题:

SELECT TRUNC(READING_DATE) AS READING_DATE, 
     AVG(DISCHARGE_M3PERSEC) AS DISCHARGE 
FROM HYDROMETRIC_GUELPH 
WHERE READING_DATE BETWEEN TIMESTAMP '2016-01-01 00:00:00.000' 
         AND  TIMESTAMP '2016-03-13 17:30:00.000' 
GROUP BY TRUNC(READING_DATE); 
相关问题