찾다

 >  Q&A  >  본문

MySQL 또는 Perl 측에서 SQL 결과에 빈 날짜를 채우는 방법과 가장 간단한 방법은 무엇입니까?

<p>다음과 같은 쿼리를 사용하여 mysql 테이블에서 빠른 csv를 작성하고 있습니다. </p> <pre class="brush:php;toolbar:false;">테이블 그룹에서 DATE(날짜), 개수(날짜)를 DATE(날짜)별로 날짜 오름차순으로 정렬합니다.</pre> <p>그런 다음 이를 Perl의 파일에 직접 덤프합니다. </p> <pre class="brush:php;toolbar:false;">while(my($date,$sum) = $sth->fetchrow) { CSV "$date,$sumn" 인쇄 }</pre> <p>그러나 데이터에는 날짜 차이가 있습니다. </p> <pre class="brush:php;toolbar:false;">| 2008-08-05 | 2008-08-07 |23 |</pre> <p>데이터를 채우고 누락된 날짜를 0개 항목으로 채우고 다음과 같은 결과를 얻고 싶습니다. </p> <pre class="brush:php;toolbar:false;">| 2008-08-05 | 2008-08-06 | 2008-08-07 |23 |</pre> <p>월의 날짜 배열과 약간의 수학을 사용하여 매우 서투른(거의 확실히 버그가 있는) 해결 방법을 함께 엮었지만 확실히 mysql이나 Perl을 사용하는 더 직접적인 방법이 있습니다. </p> <p>내가 왜 그렇게 멍청한지에 대한 천재적인 아이디어나 제안이 있나요? </p> <시간 /> <p>결국 저는 여러 가지 이유로 필요한 날짜 범위를 처리하기 위한 임시 테이블을 생성하기 위해 저장 프로시저를 사용하기로 결정했습니다. </p>
P粉448346289P粉448346289502일 전551

모든 응답(2)나는 대답할 것이다

  • P粉733166744

    P粉7331667442023-08-25 00:59:49

    이 문제를 해결해야 할 때, 누락된 날짜를 채우기 위해 실제로 관심 있는 모든 날짜만 포함하는 참조 테이블을 만들고 날짜 필드에서 데이터 테이블을 결합했습니다. 조잡하고 조잡하지만 작동합니다.

    으아악

    출력의 경우 CSV를 수동으로 생성하는 대신 SELECT INTO OUTFILE을 사용합니다. 이렇게 하면 특수 문자를 이스케이프하는 것에 대해 걱정할 필요가 없습니다.

    회신하다
    0
  • P粉593649715

    P粉5936497152023-08-25 00:39:00

    서버 측에서 비슷한 것이 필요한 경우 일반적으로 두 시점 사이의 가능한 모든 날짜를 포함하는 테이블을 만든 다음 이 테이블을 쿼리 결과와 조인합니다. 유사:

    으아악

    이 특별한 경우에는 클라이언트 측에서 확인하고 현재 날짜가 전날 이후가 아닌 경우 추가 문자열을 추가하는 것이 좋습니다.

    회신하다
    0
  • 취소회신하다