2011-08-18 2 views
1

나는 여러 테이블이있는 데이터베이스를 가지고 있습니다. 이 테이블 각각에는 데이터베이스에서 특정 행이 작성된 시간 소인을 포함하는 컬럼 'created'가 있습니다.MySQL에서 오늘 이후의 시간 스탬프를 확인하십시오.

이제는 이러한 테이블에 데이터가 들어 오면 매주 한 번씩 검사하는 MySQL 스크립트를 만들고 싶습니다. 따라서 매일 데이터가 제공되어야합니다. 데이터베이스의 모든 테이블에 대해 이렇게 할 수있는 MySQL 스크립트를 어떻게 만듭니 까?

참고 : 단일 스크립트로 데이터베이스의 모든 테이블에 대해이 작업을 수행하려는 것을 기억하십시오. 그것이 내가 알고 싶은 중요한 것입니다. current_date에 날짜 시간을 선택

+0

알 수없는 이름이있는 경우 모든 테이블에서 한 번에 선택할 수있는 솔루션에 대해 알지 못합니다. [this] (http://stackoverflow.com/questions/3571894/select-from-all-tables/3571943#3571943) 질문에서 OP는 해결책을 찾았지 만 그가 사용한 프로그래밍 언어에 의존합니다. MySQL 스크립트 자체가 아닙니다. –

답변

1

은 내가 systemdate라는 타임 스탬프 형식의 열 함께, call라는 테이블을 위해이 방법을 사용

SELECT * FROM `call` WHERE DATE(`systemdate`) = DATE(NOW()); 

mysql DATE() statement이 날짜 또는 시간 소인 필드의 날짜 부분을 가져옵니다.

죄송합니다. 지난주의 각 요일에 대한 항목이 최소한 있는지 확인하고 싶습니다.

개별적으로 prevous 일을 확인하기 위해이 쿼리를 사용할 수 있습니다

어제 :

SELECT * FROM `call` WHERE DATE(`systemdate`) = DATE(NOW()) - 1; 

전에 어제 :

SELECT * FROM `call` WHERE DATE(`systemdate`) = DATE(NOW()) - 2; 

아니면 한 번에 일주일 내내 확인할 수 있습니다

SELECT * FROM `call` WHERE DATE(`systemdate`) > DATE_SUB(CURDATE(), INTERVAL 7 DAY) GROUP BY DATE(`systemdate`); 

이것은 매일 결과를 하나씩 반환하므로 결과가 7 개인 경우 매일 적어도 하나의 항목이 작성되었음을 알 수 있습니다.

+0

답변 해 주셔서 감사합니다. 나는 또한 모든 테이블에서이 검사를하고 싶었다. 거기에 모든 타임 스탬프 필드를 가지고있는 모든 테이블에 대한 이들 중 하나를 만들 필요없이 이것을하는 방법이 있습니까? – sfactor

+0

테이블 이름을 알고 있으면 UNION을 사용할 수 있습니다. 하지만 유니온을 사용하는 경우 ** 각 테이블에 항목이 있는지 (즉, 둘 중 하나만 업데이트되었을 수 있음) 어떻게 알 수 있습니까? mysql에 액세스 할 때 사용하는 프로그래밍 언어에서 이것을 수행하는 것이 가장 좋으며, SHOW TABLES mysql 쿼리를 실행하고 나열된 각 테이블에 대해 위의 스크립트를 실행하십시오. –

0
select * from table 
where created between subdate(current_date, interval 7 day) and current_date; 

은 "오늘"(즉, "이전 자정")의 시작까지 모든 것을 포함.

관련 문제