2017-04-23 1 views
-2

mysql에서이 필터를 수행하는 것에 대한 질문이 있습니다. 날짜가 3 일입니다.MYSQL php 날짜 필터

1-start date; Ex: 10-04-2017 
2-end date; Ex: 04-20-2017 
3-date completion; Ex 23-04-2017 

순서가 시작 날짜하고 시간과 완료 날짜를 기록 할 종료 날짜 사이에 전달되는 경우; 그러나 올바른 종료일보다 높은 날짜가 기록 된 후에 주문이 배달되면 어떻게됩니까? 그래서 나는 늦게 배달 된 주문을 걸러 내고 나열하고 싶었습니다. 어떻게해야합니까?

+0

힌트 : 열을 비교하는 'WHERE'. –

+0

종료일이 시작일보다 이전 – Strawberry

답변

0

게시물에 언급 한 3 개의 날짜가있는 주문 테이블이 있다고 가정합니다. 주문 테이블에 간단한 4 개의 열 (id, startDate, endDate, compDate)이 있다고 가정합니다. 늦게 주문이 중 두 주문 테이블에 세 개의 레코드가있다

CREATE TABLE `orders` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT, 
    `startDate` datetime DEFAULT NULL, 
    `endDate` datetime DEFAULT NULL, 
    `compDate` datetime DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; 

이 가정들이 endDate가 초과입니다 : 당신이 필요로하는 지금

/*Data for the table `orders` */ 
insert into `orders`(`id`,`startDate`,`endDate`,`compDate`) values 
(1,'2017-04-10 00:00:00','2017-04-20 00:00:00','2017-04-23 00:00:00'), 
(2,'2017-04-10 00:00:00','2017-04-20 00:00:00','2017-04-19 00:00:00'), 
(3,'2017-04-10 00:00:00','2017-04-20 00:00:00','2017-04-22 00:00:00'); 

을 같이 이제 MySQL 데이터베이스의 SQL이 주어집니다 늦게 전달 된 그 주문을 확인하기 위해 필터를 사용하여 다음과 같은 간단한 SQL 문 (compDate> endDate가) 실행 :

SELECT * FROM orders WHERE compDate > endDate; 

을 당신에게 ID 1과 두 늦게 배달 기록을 줄 것이다 3. (즉, 늦게 주문.)

Click here to see the Sqlyog query snapshot that displays late orders

희망이 당신의 문제를 해결한다.

+0

마지막 질문이 하나 있는데, 이번 달의 내용 만 필터링하려면 어떻게합니까? 나는 다음과 같이 시도했다 : SELECT * FROM obra where '% 04-2017'> endDate –

+0

같이보십시오 : 'SELECT * FROM 주문 STR_TO_DATE (CONCAT (2017, '-', 04), '% Y- % m ') alphapeeler