2012-07-24 3 views
1

일일 합계가있는 Oracle 테이블이 있습니다.오라클 날짜 집계

내 목표는이 표에 매일 대신 값의 월간 합계를 표시하는 것입니다.

내가는이 쿼리를 사용하여 완료 :

select to_char(dateid, 'YYYY-MM') as thedate, count(*) 
from picture_table 
group by to_char(dateid, 'YYYY-MM') 
order by 1, 2 

여기서 문제는 내가 MySQL의에서 테이블이 Oracle 테이블을 전송해야한다는 것입니다. MySQL의 DATE 데이터 구조가 'YYYY-MM-DD'형식이어야하므로, 모든 월을 'YYYY-MM-01'이되도록 추가해야합니다. 따라서 "01"은 전체 날짜를 나타냅니다. 달.

내 모든 날짜에 -01을 추가하기 위해 오라클 쿼리를 수행하여 MySQL 테이블로 올바르게 파이프 라인 될 수 있습니까?

그러나
select to_char(dateid, 'YYYY-MM')||'-01' as thedate, count(*) 
from picture_table 
group by to_char(dateid, 'YYYY-MM') 
order by 1, 2 

, 왜 MySQL의 테이블에 날짜 필드를 사용하고 있습니다 :

답변

1

당신은 간단한 CONCAT으로 그렇게 할 것인가? "yyyy-mm"형식을 사용하려면 varchar() 열을 사용할 수 있습니까?

select date_format(dateid, '%Y-%m') as thedate, count(*) 
from picture_table 
group by date_format(dateid, '%Y-%m') 
order by 1, 2 

예는 여기에 있습니다 : :

당신은 MySQL을 단지 같은 날짜 형식을 지정할 수 있습니다
+0

저는 실제로 R을 사용하여 MySQL의 데이터로 그래프를 작성하고 값이 DATE 형식 일 때 그래프로 작성하여 X 축을 올바르게 구성 할 수 있습니다. VARCHAR로 시도했지만 R은 X 축 설명을 구성 할 수 없습니다. –

2

일반적으로 TRUNC 함수를 사용하여 해당 날짜의 첫 번째 달을 잘라내는 것이 더 효과적입니다. 결과 값은 DATE입니다.

SELECT trunc(dateid, 'MM') thedate, count(*) 
    FROM picture_table 
GROUP BY trunc(dateid, 'MM') 
ORDER BY 1, 2 

질문에서 "pipeliend to MySQL"이 무슨 뜻인지 분명하지 않습니다. 필자는 오라클에서 MySQL로 데이터를 이동하는 데 Oracle DATE을 MySQL DATE 또는 DATETIME으로 올바르게 매핑 할 수 있다고 가정합니다. 오라클의 날짜를 특정 형식의 문자열로 변환하여 MySQL이 해당 문자열을 DATE으로 다시 암시 적으로 변환하게하는 경우 매우 드문 것처럼 보일 수 있습니다.

+0

+1 캐스팅 + 캐스팅 + 캐스팅보다 확실히 좋습니다. –