mysql은 시간을 비교할 수 있나요?

(*-*)浩
풀어 주다: 2020-09-15 13:38:23
원래의
14361명이 탐색했습니다.

시간 비교는 mysql에서 [ WHERE testdate >= '2018-09-12'; t1 WHERE testdate >= 20180912;]에서 testdate를 선택하세요.

mysql은 시간을 비교할 수 있나요?

최근에 잘못된 방식으로 날짜를 비교하고 있는 것을 발견했습니다. 예를 들어 다음 명령문에서 a 필드는 DATETIME 유형 열입니다.

select a from t1 where DATEDIFF(a, &#39;2018-09-11&#39;) < 0;
로그인 후 복사

이 명령문은 날짜를 알아내는 것입니다. 2018-09-11 이전 레코드는 모두 있지만 이 문에 문제가 있습니다. a 필드가 인덱스된 경우 날짜 비교에 이 유형을 사용하면 쿼리에서 인덱스를 사용하지 않으므로 쿼리 성능이 저하됩니다.

추천 과정: MySQL 튜토리얼.

mysql은 시간을 비교할 수 있나요?

날짜 필드 비교에 대한 Mysql 문서를 읽어보세요. 날짜 비교를 수행할 때 mysql은 비교를 위해 자동으로 날짜를 숫자로 변환합니다. where 조건 이후에 문자열 형식 날짜를 사용하여 DATE, DATETIME, TIMESTAMP 및 TIME 유형 필드와 비교할 때 문자열 형식 요구 사항은 엄격하지 않습니다. "2018-09-와 같은 형식 구분 기호를 사용하여 날짜를 나타낼 수 있습니다. 11", "2018#09#11", "2018&09&11"은 mysql의 날짜와 모두 동일합니다. "20180911"과 같이 구분자가 없는 경우에는 "2018-09-11" 또는 구분자가 있는 다른 날짜와 동일합니다. 예를 들어, 아래 그림은

select a from t1 where a < &#39;2018#09#11&#39;;
与
select a from t1 where a < &#39;2018-09-11&#39;;
与
select a from t1 where a < &#39;20180911&#39;;
所代表的意义是相同的,都是查询日期小于2018年9月11日的数据
也就是说上图的查询语句,完全可以重写为,这么做的好处?就是会使用索引,是查询更快
select a from t1 where a < &#39;2018-09-11&#39;;
로그인 후 복사

날짜 유형 필드를 문자열 유형 date <, >, >=, <=, between과 비교할 때 Mysql은 비교를 위해 문자열 유형 date를 긴 정수로 변환합니다. . 을 사용하여 쿼리 속도를 높입니다.

다음 세 가지 상황은 제외됩니다.

1, 두 테이블 필드 비교

2, 날짜 유형 필드와 표현식 비교

3, 날짜 유형 필드를 비교하기 위한 표현식 사용; 위의 세 가지 경우, mysql은 비교를 위해 날짜를 문자열로 변환합니다.

다음 예제는 모두 정상적으로 실행될 수 있습니다.

INSERT INTO t1 (testdate) VALUES (20180912);
INSERT INTO t1 (testdate) VALUES (&#39;20180912&#39;);
INSERT INTO t1 (testdate) VALUES (&#39;18-09-12&#39;);
INSERT INTO t1 (testdate) VALUES (&#39;2018.09.12&#39;);
INSERT INTO t1 (testdate) VALUES (&#39;2018 09 12&#39;);
INSERT INTO t1 (testdate) VALUES (&#39;0000-00-00&#39;);

SELECT testdate FROM t1 WHERE testdate >= &#39;2018-09-12&#39;;
SELECT testdate FROM t1 WHERE testdate >= 20180912;
SELECT MOD(testdate,100) FROM t1 WHERE testdate >= 20180912;
SELECT testdate FROM t1 WHERE testdate >= &#39;20180912&#39;;
로그인 후 복사

Mysql에서는 "0000-00-00"을 DATE 유형의 "0" 값(가상 날짜라고도 함)으로 저장할 수 있습니다. 일부 시나리오에서는 NULL 값을 저장하는 것보다 더 편리합니다. DATE 유형 필드에 잘못된 날짜 값이 저장되면 MySQL은 기본적으로 해당 값을 "0000-00-00"으로 저장합니다. "0" 값 저장이 허용되지 않는 경우 NO_ZERO_DATE 매개변수를 활성화합니다.

unix_timestamp 함수를 사용하여 문자 시간을 Unix 타임스탬프로 변환할 수도 있습니다.

아아아아

위 내용은 mysql은 시간을 비교할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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