2017-04-23 111 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個不同的日期,就像您在文章中提到的那樣。假設您的訂單表有四個列(id,startDate,endDate,compDate)以保持簡單。現在你的MySQL數據庫的SQL給出如下:

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; 

假設有三個記錄您的訂單表,其中兩個是後期訂單那是他們超過結束日期:

/*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'); 

現在,您需要運行與過濾器下面簡單的SQL語句(compDate>結束日期),以檢查交付後期這些訂單:

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 compDate like'%04-2017'> endDate –

+0

試試這個: 'SELECT * FROM orders WHERE STR_TO_DATE(CONCAT(2017,' - ',04),'%Y-%m ') alphapeeler