MySQL은 비교 목적으로 지난달부터 (now ()-1 개월)까지 모든 행을 선택합니다.
지난 달의 행을 표시하기 위해 MySQL 쿼리를 작성하는 데 도움이 필요하지만 한 달 전체가 아니라 now ()와 같은 날, 시간 및 분까지만 표시하고 1 개월 전입니다.
예를 들어, 오늘이 5 월 19 일 오후 5시 25 분이면 4 월 19 일 자정 12 시부 터 오후 5시 25 분까지 (물론 같은 해부 터) 행을 선택해야합니다.
감사!
전월의 last_day를 계산하고 하루를 더하여 해당 월의 첫 번째를 얻을 수 있습니다. 어색하지만 날짜를 문자열로 형식화하여 계산에 사용하는 것보다 낫다고 생각합니다.
select
*
from
yourtable t
where
/* Greater or equal to the start of last month */
t.date >= DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 DAY) and
/* Smaller or equal than one month ago */
t.date <= DATE_SUB(NOW(), INTERVAL 1 MONTH)
하나의 MySQL 함수를 사용하면 한 달 전에 쉽게 얻을 수 있습니다.
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH);
또는
SELECT NOW() - INTERVAL 1 MONTH;
머릿속에서 MySQL에서 지난 달의 첫날을 얻는 우아한 방법을 생각할 수는 없지만 확실히 작동합니다.
SELECT CONCAT(LEFT(NOW() - INTERVAL 1 MONTH,7),'-01');
그것들을 합치면 문제를 해결하는 쿼리를 얻을 수 있습니다.
SELECT *
FROM your_table
WHERE t >= CONCAT(LEFT(NOW() - INTERVAL 1 MONTH,7),'-01')
AND t <= NOW() - INTERVAL 1 MONTH
간단한 코드를 확인하세요
SELECT * FROM table_name WHERE created <= (NOW() - INTERVAL 1 MONTH)
다음은 질문과 관련된 MySQL 날짜 작업의 예입니다.
SELECT DATE_ADD( now( ) , INTERVAL -1 MONTH )
위는 한 달 전 날짜 시간을 반환합니다.
따라서 다음과 같이 사용할 수 있습니다.
SELECT *
FROM your_table
WHERE Your_Date_Column BETWEEN '2011-01-04'
AND DATE_ADD(NOW( ), INTERVAL -1 MONTH )
SELECT *
FROM table
WHERE date BETWEEN
ADDDATE(LAST_DAY(DATE_SUB(NOW(),INTERVAL 2 MONTH)), INTERVAL 1 DAY)
AND DATE_SUB(NOW(),INTERVAL 1 MONTH);
참조 워드 프로세서 에 대한 정보를 원하시면 DATE_SUB
, ADDDATE
, LAST_DAY
및 기타 유용한 날짜 기능을 제공합니다.
다음 WHERE
과 같은 절을 사용할 수 있습니다 .
WHERE DateColumn BETWEEN
CAST(date_format(date_sub(NOW(), INTERVAL 1 MONTH),'%Y-%m-01') AS date)
AND
date_sub(now(), INTERVAL 1 MONTH)
SELECT *
FROM table
WHERE myDtate BETWEEN now()
, DATE_SUB(NOW()
, INTERVAL 1 MONTH)
내 해결책은 NOW()
프로그래밍 언어로 SQL을 작성할 때 사용을 피하고 문자열로 대체하는 것입니다. NOW()
표시 한대로 의 문제 는 현재 시간을 포함한다는 것입니다. 따라서 다음 대신 쿼리 시작일 (0 시간 및 분)부터 캡처합니다.
r.date <= DATE_SUB(NOW(), INTERVAL 99 DAY)
나는 (php) :
$current_sql_date = date('Y-m-d 00:00:00');
SQL에서 :
$sql_x = "r.date <= DATE_SUB('$current_sql_date', INTERVAL 99 DAY)"
이를 통해 주어진 날짜의 자정부터 데이터를 검색합니다.
'IT Share you' 카테고리의 다른 글
디코딩 후 비트 맵 바이트 크기? (0) | 2020.11.22 |
---|---|
Python의 파이프 문자 (0) | 2020.11.22 |
ScrollView 내부의 MapView? (0) | 2020.11.22 |
-u없이 업스트림을 자동으로 설정하도록 git push를 구성하는 방법은 무엇입니까? (0) | 2020.11.21 |
Array.indexOf () 대소 문자를 구분하지 않으려면 어떻게해야합니까? (0) | 2020.11.21 |