2017-04-23 8 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)を持っているとします。

あなたが必要になりました
/*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'); 

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にを超えている後半に受注しているそのうちの2つご注文テーブル内の3つのレコードが存在すると仮定しますと、今、あなたのMySQLデータベースのSQLが与えられています後半に配信されたものをオーダーをチェックするためにフィルタ(compDate> endDateに)で次のような単純なSQL文を実行するために:

SELECT * FROM orders WHERE compDate > endDate; 

、それはあなたに2を与える下旬IDが1のレコードを提供し、 3.(すなわち、後半に受注。)

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

ホープこれはあなたの問題を解決します。

+0

最後の疑問が1つありますが、今月の内容のみをフィルタリングするにはどうすればよいですか?私はこのようにしてみました:SELECT * FROM obra WHERE compDate like '%04-2017'> endDate –

+0

これを試してみてください: 'SELECT * FROM orders where STR_TO_DATE(CONCAT(2017、 ' - '、04)、 '%Y-%m ') alphapeeler