2017-04-23 114 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