2017-12-28 20 views
0

여기 내 첫 번째 질문입니다. 도움을 주셔서 감사합니다.문자 체인의 날짜 표시

많은 열이있는 이전 데이터베이스가 있지만 DATE 열이 아닙니다. 네, 저의 실수입니다.

는, 나는 라는 열은 다음 2 개 자리는 MM이며, 다음 (2) DD이며,

처음 4 자리 숫자는 YYYY 있습니다
2017113020440370769 

같은 날짜와 시간을 포함 일부 데이터와을 question_id 한 .

나는 특정 날짜에 몇개의 질문이 있었는지를 계산하기 위해 그러한 문자를 추출하는 쿼리를 만들려고합니다.

특정 날짜에 대한이 일을

내가 할 수있는 :

SELECT COUNT(*) 
FROM questions 
WHERE question_id LIKE '20171228%'; 

하지만 오늘이 작업을 자동화 해주는 싶어, 매일에게 YYYYMMDD %의

를 입력 일상이 아닌 것은 가능합니까? CURDATE 사용? 아니면 사용할 수있는 특정 TIMESTAMP가 있습니까?

대단히 감사합니다!

+0

페이지는 [ 왜 내가 아주 단순한 SQL 쿼리 인 것처럼 보이는 MCVE를 제공해야합니까?] (http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcv 매우 단순한 SQL 쿼리) – Strawberry

+0

정규 표현식으로 날짜를 추출한 다음 그룹화 할 결과 세트의 일부로 가져옵니다. 나는 실제로 날짜 필드를 추가하여 앱을 업데이트하도록 설정했다. (MySQL에 자동으로 타임 스탬프를 설정하는 기능이 없나요?) 그리고 나서 기존의 빈 시간 스탬프를 한 번 업데이트합니다. 그러나 실제 작업을 수행하려면 작은 테이블에서 작업해야합니다. 스키마와 예제 데이터가 없으면이를 대답으로 변환 할 수 없습니다. –

답변

0

네, 가능하면 다음과 같이 와일드 카드로 현재 날짜를 구축 할 수 있습니다 :

특정 하루의
SELECT COUNT(*) 
FROM questions 
WHERE question_id LIKE CONCAT(DATE_FORMAT(CURDATE(), '%Y%m%d'), '%'); 

; 오늘.

SELECT SUBSTR(question_id,1,8) ASKED_ON, COUNT(*) NUMBER_OF_QUESTIONS 
FROM questions 
GROUP BY SUBSTR(question_id,1,8); 
+1

모두 감사합니다. 완벽하게 작동했습니다! – Bigote

0
  • 당신은 예를 들어, 오늘날의 날짜를 얻을 수 있습니다 : 아래 그림과 같이 모든 날짜를 들어 당신은 question_id의 날짜 부분에 대한 집계를 수행해야 CURDATE()
  • 당신은 CONCAT()

그와 DATE_FORMAT()

  • 당신 사기꾼 CONCATENATE 문자열로 날짜를 포맷 할 수 있습니다 당신이 시도 ;-)

  • 0

    을 필요로하는 모든 벽돌은 다음과 같습니다

    SELECT LEFT('20171228ASD',8) = CURRENT_DATE(); 
    
    
    SELECT COUNT(*) 
    FROM questions 
    WHERE LEFT(question_id',8) = CURRENT_DATE();