my sql 날짜 와 시간 을 어떻게 조회 합 니까?
프로젝트 개발 에서 일부 업무 표 필드 는 날짜 와 시간 유형 을 자주 사용 하고 후속 적 으로 이런 필드 의 조회 와 관련 될 수 있다.날짜 와 시간 에 대한 조회 등 각종 수요 도 매우 많 기 때문에 본 글 은 날짜 와 시간 필드 의 규범화 조회 방법 을 간단하게 설명 한다.
1.날짜 와 시간 유형 개관
MySQL 이 지원 하 는 날짜 와 시간 유형 은 DATETIME,TIMESTAMP,DATE,TIME,YEAR 입 니 다.몇 가지 유형 은 다음 과 같 습 니 다.
날짜 와 시간 필드 형식 을 선택 할 때 저장 수요 에 따라 적당 한 유형 을 선택 하면 됩 니 다.
2.날짜 와 시간 관련 함수
처리 날짜 와 시간 필드 의 함수 가 매우 많 습 니 다.어떤 함 수 는 조회 에서 자주 사용 되 고 있 습 니 다.다음은 관련 함수 의 사용 방법 을 소개 합 니 다.
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 조회 날짜 와 시간 에 관 한 자 료 는 우리 의 다른 관련 글 에 관심 을 가 져 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 JSON 인덱싱 - aarondfrancis사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 말하지만 완전히 정확하지는 않습니다. MySQL로 JSON 열을 인덱싱하는 것은 완전히 가능합니다! 사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.