[mysql] mysql에서 현재 날짜 시간에서 30 일을 빼는 방법은 무엇입니까?

mysql의 현재 날짜 시간에서 30 일을 빼려면 어떻게합니까?

SELECT * FROM table
WHERE exec_datetime BETWEEN DATEDIFF(NOW() - 30 days) AND NOW();



답변

SELECT * FROM table
WHERE exec_datetime BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW();

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add


답변

사용하지 않으려는 사람은 다음을 DATE_SUB사용하십시오 CURRENT_DATE.

SELECT CURRENT_DATE - INTERVAL 30 DAY


답변

NOW()쿼리 캐싱 또는 최적화가 손실 될 때마다 쿼리가 다르므로 사용하지 마십시오 . MySQL 문서 에서 사용하지 말아야 할 함수 목록을 참조하십시오 .

아래 코드에서이 테이블이 시간이 지남에 따라 커지고 있다고 가정 해 봅시다. 새로운 내용이 추가되었으며 지난 30 일 동안 만 내용을 표시하려고합니다. 가장 일반적인 경우입니다.

날짜가 문자열로 추가되었습니다. NOW()캐싱을 종료 할 때 함수 를 사용하는 것보다이 방법으로 호출 코드에서 날짜를 추가하는 것이 좋습니다 .

SELECT * FROM table WHERE exec_datetime >= DATE_SUB('2012-06-12', INTERVAL 30 DAY);

BETWEEN이 초 초에서 30 초 전부터 30 초 전까지 물건을 원한다면 사용할 수 있지만 내 경험에서 일반적인 사용 사례는 아니므로 단순화 된 쿼리가 잘 제공되기를 바랍니다.


답변

MySQL은 지금부터 며칠을 뺍니다.

select now(), now() - interval 1 day

인쇄물:

2014-10-08 09:00:56     2014-10-07 09:00:56

다른 간격 시간 표현 단위 인수 :

https://dev.mysql.com/doc/refman/5.5/en/expressions.html#temporal-intervals

select now() - interval 1 microsecond
select now() - interval 1 second
select now() - interval 1 minute
select now() - interval 1 hour
select now() - interval 1 day
select now() - interval 1 week
select now() - interval 1 month
select now() - interval 1 year 


답변

당신은 또한 사용할 수 있습니다

select CURDATE()-INTERVAL 30 DAY


답변

SELECT date_format(current_date - INTERVAL 50 DAY,'%d-%b-%Y')

SQL에서 날짜 형식을 사용하여 형식을 지정할 수 있습니다.


답변

또 다른 방법

SELECT COUNT(*) FROM tbl_debug WHERE TO_DAYS(`when`) < TO_DAYS(NOW())-30 ;