Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL에서 varchar로 저장된 BETWEEN 날짜 검색?

<시간/>

STR_TO_DATE()를 사용하여 varchar로 저장된 날짜 사이를 검색할 수 있습니다. 구문은 다음과 같습니다 -

select *from yourTableName where STR_TO_DATE(LEFT(yourColumnName,LOCATE('',yourColumnName)),'%m/%d/%Y') BETWEEN 'yourDateValue1' AND 'yourDateValue2';

위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -

mysql> 테이블 생성 SearchDateAsVarchar -> ( -> Id int NOT NULL AUTO_INCREMENT, -> ShippingDate varchar(100), -> PRIMARY KEY(Id) -> );쿼리 OK, 영향을 받은 행 0개(0.99초) 

INSERT 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -

mysql> insert into SearchDateAsVarchar(ShippingDate) values('6/28/2011 9:58 AM');Query OK, 영향을 받는 1개 행(0.19초)mysql> insert into SearchDateAsVarchar(ShippingDate) 값('6/18 /2011 10:50:39 AM');쿼리 OK, 1행 영향(0.55초)mysql> insert into SearchDateAsVarchar(ShippingDate) values('6/22/2011 11:45:40 AM');쿼리 OK, 1 영향을 받는 행(0.18초)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> 선택 * from SearchDateAsVarchar;

다음은 출력입니다 -

+----+--------------------------+| 아이디 | 배송일 |+----+-----------------------+| 1 | 2011년 6월 28일 오전 9시 58분 || 2 | 2011년 6월 18일 오전 10:50:39 || 3 | 2011년 6월 22일 오전 11시 45분 40초 |+----+----------------------------------+3행 세트(0.00초) 

다음은 varchar −

로 저장된 날짜 사이를 검색하는 쿼리입니다.
mysql> select *from SearchDateAsVarchar whereSTR_TO_DATE(LEFT(ShippingDate,LOCATE(' ',ShippingDate)),'%m/%d/%Y') BETWEEN'2011-06-20' AND '2011-06-28 ';

다음은 출력입니다 -

+----+--------------------------+| 아이디 | 배송일 |+----+-----------------------+| 1 | 2011년 6월 28일 오전 9시 58분 || 3 | 2011년 6월 22일 오전 11시 45분 40초 |+----+----------------------------------+세트의 행 2개(0.00초)