my sql 날짜 와 시간 을 어떻게 조회 합 니까?

선언:
프로젝트 개발 에서 일부 업무 표 필드 는 날짜 와 시간 유형 을 자주 사용 하고 후속 적 으로 이런 필드 의 조회 와 관련 될 수 있다.날짜 와 시간 에 대한 조회 등 각종 수요 도 매우 많 기 때문에 본 글 은 날짜 와 시간 필드 의 규범화 조회 방법 을 간단하게 설명 한다.
1.날짜 와 시간 유형 개관
MySQL 이 지원 하 는 날짜 와 시간 유형 은 DATETIME,TIMESTAMP,DATE,TIME,YEAR 입 니 다.몇 가지 유형 은 다음 과 같 습 니 다.

날짜 와 시간 필드 형식 을 선택 할 때 저장 수요 에 따라 적당 한 유형 을 선택 하면 됩 니 다.
2.날짜 와 시간 관련 함수
처리 날짜 와 시간 필드 의 함수 가 매우 많 습 니 다.어떤 함 수 는 조회 에서 자주 사용 되 고 있 습 니 다.다음은 관련 함수 의 사용 방법 을 소개 합 니 다.
  • CURDATE 와 CURRENTDATE   두 함수 의 작용 이 같 아서 현재 시스템 의 날짜 값 을 되 돌려 줍 니 다.
  • CURTIME 와 CURRENTTIME   두 함수 의 작용 이 같 아서 현재 시스템 의 시간 값 을 되 돌려 줍 니 다.
  • NOW()와 SYSDATE()   두 함수 의 작용 이 같 아서 현재 시스템 의 날짜 와 시간 값 을 되 돌려 줍 니 다.
  • UNIX_TIMESTAMP   UNIX 타임 스탬프 함 수 를 가 져 와 UNIX 타임 스탬프 를 기반 으로 한 부호 없 는 정 수 를 되 돌려 줍 니 다.
  • FROM_UNIXTIME   UNIX 타임 스탬프 를 시간 형식 으로 변환 하여 UNIXTIMESTAMP 는 서로 역함수 입 니 다.
  • TO_DAYS()   날짜 값 을 추출 하고 서기 0 년 부터 지금까지 의 일 수 를 되 돌려 줍 니 다.
  • DAY()    지정 한 날짜 나 시간의 일 치 를 가 져 옵 니 다.
  • DATE()   지정 한 날짜 나 시간의 날 짜 를 가 져 옵 니 다.
  • TIME()   지정 한 날짜 나 시간의 시간 을 가 져 옵 니 다.
  • MONTH   지정 한 날짜 의 달 을 가 져 옵 니 다.
  • WEEK   지정 한 날 짜 를 가 져 오 는 것 은 1 년 중 몇 주 입 니까?
  • YEAR   연 도 를 얻다.
  • QUARTER  날짜 가 있 는 분기 값 을 가 져 옵 니 다.
  • DATE_ADD 와 ADDDATE   두 함수 기능 이 같 습 니 다.모두 날짜 에 지정 한 시간 간격 을 추가 합 니 다.
  • DATE_SUB 와 SUBDATE.   두 함수 의 기능 이 같 으 며,모두 날짜 에서 지정 한 시간 간격 을 뺀 것 이다.
  • ADDTIME   시간 덧셈 연산,원시 시간 에 지정 한 시간 을 추가 합 니 다.
  • SUBTIME   시간 감법 연산 은 원시 시간 에서 지 정 된 시간 을 뺀 다.
  • DATEDIFF   두 날짜 사이 의 간격 을 가 져 오고 매개 변수 1 에서 매개 변수 2 를 뺀 값 을 되 돌려 줍 니 다.
  • DATE_FORMAT   지정 한 날 짜 를 포맷 하고 매개 변수 에 따라 지정 한 형식의 값 을 되 돌려 줍 니 다.
  • 일부 사용 예시:
    
    mysql> select CURRENT_DATE,CURRENT_TIME,NOW();
    +--------------+--------------+---------------------+
    | CURRENT_DATE | CURRENT_TIME | NOW()        |
    +--------------+--------------+---------------------+
    | 2020-06-03  | 15:09:37   | 2020-06-03 15:09:37 |
    +--------------+--------------+---------------------+
    
    mysql> select TO_DAYS('2020-06-03 15:09:37'),
    TO_DAYS('2020-06-03')-TO_DAYS('2020-06-01');
    +--------------------------------+---------------------------------------------+
    | TO_DAYS('2020-06-03 15:09:37') | TO_DAYS('2020-06-03')-TO_DAYS('2020-06-01') |
    +--------------------------------+---------------------------------------------+
    |             737944 |                      2 |
    +--------------------------------+---------------------------------------------+
    
    mysql> select MONTH('2020-06-03'),WEEK('2020-06-03'),YEAR('2020-06-03');
    +---------------------+--------------------+--------------------+
    | MONTH('2020-06-03') | WEEK('2020-06-03') | YEAR('2020-06-03') |
    +---------------------+--------------------+--------------------+
    |          6 |         22 |        2020 |
    +---------------------+--------------------+--------------------+
    
    # DATEDIFF(date1,date2)        date1       date2      
    mysql> SELECT DATEDIFF('2017-11-30','2017-11-29') AS COL1,
      -> DATEDIFF('2017-11-30','2017-12-15') AS col2;
    +------+------+
    | COL1 | col2 |
    +------+------+
    |  1 | -15 |
    +------+------+
    3.날짜 와 시간 필드 의 규범 적 인 조회
    위의 내용 은 모두 우리 의 조회 수 요 를 위해 준비 한 것 으로 프로젝트 수요 에서 날짜 나 시간 을 조건 으로 선별 조 회 를 자주 한다.때때로 이런 수 요 는 다양 하 다.다음은 날짜 와 시간 필드 에 대한 조회 문법 을 배 워 보 자.
    우선 조 회 를 더욱 정확하게 하기 위해 서 는 데 이 터 를 삽입 할 때 도 규범 에 따라 삽입 해 야 한다.예 를 들 어 연 도 는 4 자리 숫자 를 사용 하고 날짜 와 달 은 합 리 적 인 범위 내 에서 해 야 한다.다음은 테스트 의 편 의 를 위해 우 리 는 표를 만 들 고 일부 데 이 터 를 삽입 해 야 한다.
    
    CREATE TABLE `t_date` (
    `increment_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '    ',
    `year_col` YEAR NOT NULL COMMENT ' ',
    `date_col` date NOT NULL COMMENT '  ',
    `time_col` time NOT NULL COMMENT '  ',
    `dt_col` datetime NOT NULL COMMENT 'datetime  ',
    `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '    ',
     PRIMARY KEY (`increment_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='time   ';
    
    
    #                 
    INSERT INTO t_date (year_col,date_col,time_col,dt_col,create_time) VALUES 
    (year(now()),DATE(NOW()),time(now()),NOW(),NOW());
    
    
    #          
    INSERT INTO t_date ( `year_col`, `date_col`, `time_col`, `dt_col`, `create_time` )
    VALUES
      ( 2020, '2020-06-03', '09:00:00', '2020-06-03 10:04:04', '2020-06-03 10:04:04' ),
      ( 2020, '2020-05-10', '18:00:00', '2020-05-10 16:00:00', '2020-05-10 16:00:00' ),
      ( 2019, '2019-10-03', '16:04:04', '2019-10-03 16:00:00', '2019-10-03 16:00:00' ),
      ( 2018, '2018-06-03', '16:04:04', '2018-06-03 16:00:00', '2018-06-03 16:00:00' ),
      ( 2000, '2000-06-03', '16:04:04', '2000-06-03 08:00:00', '2000-06-03 08:00:00' ),
      ( 2008, '2008-06-03', '16:04:04', '2008-06-03 08:00:00', '2008-06-03 08:00:00' ),
      ( 1980, '1980-06-03', '16:04:04', '1980-06-03 08:00:00', '1980-06-03 08:00:00' );
    위의 테스트 표 의 데이터 에 근거 하여 우 리 는 몇 가지 흔히 볼 수 있 는 검색 어의 쓰 기 를 배 울 것 이다.
    날짜 나 시간 등에 따라 조회 하 다.
    
    select * from t_date where year_col = 2020;
    select * from t_date where date_col = '2020-06-03';
    select * from t_date where dt_col = '2020-06-03 16:04:04';
    날짜 나 시간 범위 에 따라 조회
    
    select * from t_date where date_col > '2018-01-01';
    select * from t_date where dt_col >= '2020-05-01 00:00:00' and dt_col < '2020-05-31 23:59:59';
    select * from t_date where dt_col between '2020-05-01 00:00:00' and '2020-05-31 23:59:59';
    이번 달 데이터 조회
    
    #   create_time      
    select * from t_date where DATE_FORMAT(create_time, '%Y-%m' ) = DATE_FORMAT( CURDATE( ) , '%Y-%m' );
    최근 며칠 간 의 데 이 터 를 조회 하 다.
    
    #  date_col        7  30    
    SELECT * FROM t_date where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(date_col);
    SELECT * FROM t_date where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(date_col);
    기타 각종 조회 작성 법
    
    #        
    SELECT * FROM t_date WHERE TO_DAYS(create_time) = TO_DAYS(NOW());
    
    #         
    SELECT * FROM t_date WHERE DATE_FORMAT(create_time, '%Y-%m')='2020-06';
    
    #        
    SELECT * FROM t_date WHERE DATE_FORMAT(create_time, '%Y')= 2020;
    SELECT * FROM t_date WHERE YEAR(create_time) = 2020;
    
    #           ,   
    SELECT * FROM t_date WHERE DATE_FORMAT(create_time, '%Y') BETWEEN '2018' AND '2020' ORDER BY create_time DESC;
    요약:
    이 글 은 날짜 와 시간 필드 에서 시작 하여 관련 함수 의 사용 방법 을 설명 하 였 으 며,마지막 으로 자주 사용 하 는 조회 방법 을 열거 하 였 다.이 내용 들 이 당신 에 게 도움 이 되 기 를 바 랍 니 다.실제 상황 에서 일부 조 회 는 더욱 복잡 할 수 있 습 니 다.특히 데이터 의 양 이 많 을 때 시간 필드 에 따라 조회 하 는 속도 가 느 릴 수 있 습 니 다.이때 도 색인 을 만 드 는 것 에 주의해 야 합 니 다.시간 필드 를 시간 스탬프 로 바 꾸 는 것 이 좋 습 니 다.전체적인 조회 와 선별 이 빠 르 기 때 문 입 니 다.날짜 와 시간 필드 에서 연산 을 하지 말고 프로그램 이 완성 할 수 있 는 일 은 데이터베이스 차원 에서 하지 말 라 는 알림 도 해 야 한다.
    이상 은 my sql 이 날짜 와 시간 에 대한 상세 한 내용 을 어떻게 조회 하 는 지,my sql 조회 날짜 와 시간 에 관 한 자 료 는 우리 의 다른 관련 글 에 관심 을 가 져 주 십시오!

    좋은 웹페이지 즐겨찾기