MySQL 쿼리 오늘, 어제, 지난 7일, 지난 30일, 이번 달, 지난달 데이터 방식

大家讲道理
풀어 주다: 2016-11-12 10:47:09
원래의
2087명이 탐색했습니다.

기사 테이블 기사가 있습니다. 기사 추가 시간은 int(5) 유형입니다. 이제 오늘 추가된 총 기사 수를 쿼리하여 시간별로 정렬해야 합니다. 쿼리문은 다음과 같습니다.

  SELECT * FROM `article` where date_format(from_UNIXTIME(`add_time`),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d');
로그인 후 복사
또는
    SELECT * FROM `article` where to_days(date_format(from_UNIXTIME(`add_time`),'%Y-%m-%d')) = to_days(now());
로그인 후 복사
위 테이블의 add_time 필드의 저장 유형이 DATETIME 유형 또는 TIMESTAMP 유형이라고 가정하면 다음과 같이 쿼리문을 작성할 수도 있습니다. 다음 :
오늘의 정보 기록 조회 :
    SELECT * FROM `article` where to_days(`add_time`) = to_days(now());
로그인 후 복사

어제의 정보 기록 조회 :
   SELECT * FROM `article` where to_days(now()) – to_days(`add_time`) <= 1;
로그인 후 복사

지난 7일간의 정보 기록 조회 :
  SELECT * FROM `article` where date_sub(curdate(), INTERVAL 7 DAY) <= date(`add_time`);
로그인 후 복사

정보 조회 지난 30일간의 기록 조회:
    SELECT * FROM `article` where date_sub(curdate(), INTERVAL 30 DAY) <= date(`add_time`);
로그인 후 복사

이달의 정보 기록 조회:
    SELECT * FROM `article` where date_format(`add_time`, ‘%Y%m&#39;) = date_format(curdate() , ‘%Y%m&#39;);
로그인 후 복사

전월의 정보 기록 조회:

SELECT * FROM `article` where period_diff(date_format(now() , ‘%Y%m&#39;) , date_format(`add_time`, ‘%Y%m&#39;)) =1;
로그인 후 복사
여러 기능 분석 위의 SQL 문에서:

(1) to_days

이름과 마찬가지로 특정 날짜 또는 시간 문자열을 특정 날짜에 해당하는 Unix 타임스탬프로 변환합니다. 예:
 
   mysql> select  to_days(&#39;2010-11-22 14:39:51&#39;);      
   +--------------------------------+                                                        
   | to_days(&#39;2010-11-22 14:39:51&#39;) |
  +--------------------------------+
   |                         734463 |
   +--------------------------------+
   
   mysql> select  to_days(&#39;2010-11-23 14:39:51&#39;);
   +--------------------------------+
  | to_days(&#39;2010-11-23 14:39:51&#39;) |
  +--------------------------------+
   |                         734464 |
   +--------------------------------+
로그인 후 복사
22일과 23일의 차이는 변환 후의 수가 1만큼 증가한 것을 알 수 있습니다. 이 세분화된 쿼리는 상대적으로 거칠고 때로는 쿼리 요구 사항을 충족하지 못할 수 있으므로 세분화된 쿼리를 사용해야 합니다. str_to_date 함수를 사용하면 이 함수의 사용법이 아래에서 분석됩니다.

알림:

(1) to_days()는 양력(1582년) 출현 이전의 값에는 사용되지 않습니다. 그 이유는 달력이 변경되면 날짜가 누락되기 때문입니다. 고려되지 않습니다. 따라서 이 함수의 결과는 1582년 이전 날짜(또는 다른 지역에서는 다음 연도)에 대해서는 신뢰할 수 없습니다.

(2) MySQL "날짜 및 시간 유형"의 규칙은 날짜의 두 자리 연도 값을 네 자리로 변환하는 것입니다. 따라서 '1997-10-07'과 '97-10-07'은 같은 날짜로 간주됩니다:
   mysql> select to_days(&#39;1997-10-07&#39;), to_days(&#39;97-10-07&#39;);
     
    -> 729669, 729669
로그인 후 복사
(2) str_to_date

이 함수는 문자열 시간을 완전히 변환할 수 있습니다. , 예:
 
    mysql> select str_to_date("2010-11-23 14:39:51",&#39;%Y-%m-%d %H:%i:%s&#39;);
    
    +--------------------------------------------------------+
    | str_to_date("2010-11-23 14:39:51",&#39;%Y-%m-%d %H:%i:%s&#39;) |
    +--------------------------------------------------------+
   | 2010-11-23 14:39:51                                    |
  +--------------------------------------------------------+
로그인 후 복사
구체적인 사례 작업은 다음과 같습니다.

select str_to_date(article.`add_time`,&#39;%Y-%m-%d %H:%i:%s&#39;)
   from article
    where str_to_date(article.`add_time`,&#39;%Y-%m-%d %H:%i:%s&#39;)>=&#39;2012-06-28 08:00:00&#39; and str_to_date(article.`add_time`,&#39;%Y-%m-%d %H:%i:%s&#39;)<=&#39;2012-06-28 09:59:59&#39;;
로그인 후 복사

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!