我有一个关于在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