我有一個關於在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
如果訂單在開始日期和結束日期之間交貨,它將準時並記錄完成日期; 但是如果訂單在交貨之後會記錄日期高於正確的結束日期? 所以我想過濾並列出遲交的訂單。 我該怎麼辦?
我有一個關於在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
如果訂單在開始日期和結束日期之間交貨,它將準時並記錄完成日期; 但是如果訂單在交貨之後會記錄日期高於正確的結束日期? 所以我想過濾並列出遲交的訂單。 我該怎麼辦?
假設您的訂單中有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
希望這能解決你的問題。
最後一個疑問,以及如何僅過濾當前月份?我試過像這樣:SELECT * FROM obra WHERE compDate like'%04-2017'> endDate –
試試這個: 'SELECT * FROM orders WHERE STR_TO_DATE(CONCAT(2017,' - ',04),'%Y-%m ')
提示:WHERE與列上的比較。 –
結束日期在開始日期之前 – Strawberry