IT

MySQL 쿼리-오늘과 지난 30 일 기록 레코드

lottoking 2020. 8. 4. 22:46
반응형

MySQL 쿼리-오늘과 지난 30 일 기록 레코드


지난 30 일 데이터베이스에 추가 된 모든 레코드를 반환하고 싶습니다. 표시 목적으로 날짜를 mm / dd / yy로 변환해야합니다.

create_date between DATE_FORMAT(curdate(),'%m/%d/%Y') AND (DATE_FORMAT(curdate() - interval 30 day,'%m/%d/%Y')) 

지난 30 일로 레코드를 제한하지 못합니다. 모든 레코드를 선택합니다.

누구든지 올바른 방향으로 나를 가리킬 수 있습니까? 내가 가까이있는 것 같은 가치

고마워요 좋은 주 되세요.


당신은 적용 할 필요가 DATE_FORMATSELECT절 아닌 WHERE절 :

SELECT  DATE_FORMAT(create_date, '%m/%d/%Y')
FROM    mytable
WHERE   create_date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()

또한 , 날짜 부분 A와 충전 시간 부분으로 참조 CURDATE()만 반환하는 경우 DATE저장 파일을 선택하지 않습니다.create_dateDATETIME

이 경우 NOW대신 다음 을 사용 합니다.

SELECT  DATE_FORMAT(create_date, '%m/%d/%Y')
FROM    mytable
WHERE   create_date BETWEEN NOW() - INTERVAL 30 DAY AND NOW()

SELECT
    *
FROM
    < table_name >
WHERE
    < date_field > BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY)
AND NOW();


DATE_FORMAT을 반환하므로 문자열 BETWEEN절에 두 개의 문자열을 사용 하고 있으며 예상대로 작동하지 않습니다.

대신 날짜를 형식으로 변환 하고 실제 날짜를 SELECT수행하십시오 BETWEEN. 예를 들어

SELECT DATE_FORMAT(create_date, '%m/%d/%y') as create_date_formatted
FROM table
WHERE create_date BETWEEN (CURDATE() - INTERVAL 30 DAY) AND CURDATE()

mysql로 ​​작성할 수도 있습니다.

SELECT  DATE_FORMAT(create_date, '%m/%d/%Y')
FROM    mytable
WHERE   create_date < DATE_ADD(NOW(), INTERVAL -1 MONTH);

결정된


현재 날짜 활동 및 이전 30 일 동안의 완전한 활동의 ​​경우, SYSDATE가 이전 날짜 30 일에 변수가 날짜의 전체 데이터가 있기 때문입니다.

SELECT  DATE_FORMAT(create_date, '%m/%d/%Y')
FROM mytable
WHERE create_date BETWEEN CURDATE() - INTERVAL 30 DAY AND SYSDATE()

curdate()기능 을 사용하지 않습니다 . 이것은 TSQL내가 사용하는 사람들을위한 해결책입니다.

SELECT myDate
FROM myTable
WHERE myDate BETWEEN DATEADD(DAY, -30, GETDATE()) AND GETDATE()

참고 URL : https://stackoverflow.com/questions/2041575/mysql-query-records-between-today-and-last-30-days

반응형