2017-03-23 1 views
0

레코드 생성 날짜가 저장된 데이터베이스가 있습니다. 문제는 내가 1 년 이내에 SELECT 모든 레코드를 시도 할 때 반환 된 행을 얻지 못한다는 것입니다. MySQL - BETWEEN 절이 DATETIME과 함께 제대로 작동하지 않습니다.

은 내가 할 노력하고있어 내가 가진 무엇을 설명하기 위해 SQLFiddle을 만들어 :

SELECT aux.description, DATE_FORMAT(aux.date_creation, '%d/%m/%Y às %H:%i') AS `formatted_date` 
FROM aux 
WHERE aux.date_creation BETWEEN 'CURDATE() - INTERVAL 1 YEAR' AND 'CURDATE()' 
ORDER BY `formatted_date` DESC; 

단일 따옴표 잘못된 : http://sqlfiddle.com/#!9/33a32b/8

SELECT aux.description, DATE_FORMAT(aux.date_creation, '%d/%m/%Y às %H:%i') AS `formatted_date` 
    FROM aux 
    WHERE aux.date_creation BETWEEN 'CURDATE() - INTERVAL 1 YEAR' AND 'CURDATE()' 
    ORDER BY `formatted_date` DESC; 
+0

여기에 코드를 입력해야합니다. SQLFiddle은 항상 온라인이 아닙니다. –

답변

2

이것은 당신의 쿼리입니다. 날짜 표현식이 아닌 문자열 상수가 있습니다. 아마도, date_creation 과거에, 그래서 당신이 필요로하는 모든입니다 : 나는 또한 ORDER BY을 변경

SELECT aux.description, 
     DATE_FORMAT(aux.date_creation, '%d/%m/%Y às %H:%i') AS formatted_date 
FROM aux 
WHERE aux.date_creation >= CURDATE() - INTERVAL 1 YEAR 
ORDER BY aux.date_creation DESC; 

참고. 일반적으로 1 월 2 일이 2 월 1 일이 아닌 1 월 1 일을 따르기를 원합니다.

+0

작은 따옴표 안에 함수를 사용했는데 문제가 없습니다. 이 단일 쿼리로 인해 방금 발생했습니다. 이상한 것들. 고마워, 친구! – Minoru

관련 문제