2016-06-19 10 views
1

特定の月のテーブルからすべてのデータを取得しようとしていますが、データベーステーブルの日付フォーマットは2016-06-19です。日付を選択した場合、2016-05-22 のように、2016-05-072016-06-06の値をテーブルから取得します。特定の月のテーブルからすべてのデータを見つけるには

また今月の05月のすべての値には、PHPでmysqliを使用しています。このクエリを使用しようとしました

SELECT * FROM t_tenancy_details WHERE 
    agreement_date >= DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y/%m/01')AND 
    agreement_date < DATE_FORMAT(CURRENT_DATE, '%Y/%m/01') 

これは正常に動作しますが、前の月を選択しても動作しません。

+1

であるべき - 私は通常、逆の効果を持っているdownvoteしていない私たちを求めて怖いし... –

+0

た場合あなたは言う: "...もし私が2016年5月22日を選択すると、2016年6月7日から2016年6月6日に検索されます..."、あなたは本当に "特定の月" ?特定の日付の周りの月のようなものです。後者は本当にあなたが望むものですか? –

+0

@KIKO Softwareはい私は、5/6/7のような特定の蛾のようなものを検索する必要があることを望みます。しかし、2016-05-22のような形式の日付 私は両方の方法が必要です –

答えて

1

何が必要なのかは疑問からはっきりしません。私が理解できる2つの要件に基づいて:

  1. 指定した日付を取り巻くすべてのもの(与えられた日からすなわち+ -15日)取得:

    SELECT * 
        FROM t_tenancy_details 
    WHERE agreement_date >= DATE_SUB(@d, INTERVAL 15 DAY) 
        AND agreement_date <= DATE_ADD(@d, INTERVAL 15 DAY); 
    
  2. はどこ月のすべてのレコードを取得します。指定された日付の月と同じである:

    @dはあなたのケースでは、入力された日付である
    SELECT * 
        FROM t_tenancy_details 
    WHERE MONTH(agreement_date) = MONTH(@d) 
        AND YEAR(agreement_date) = YEAR(@d); 
    

- CURRENT_DATE

+1

@halfer、情報ありがとう! –

0

「ダウン私は損失尋ねるの資格意志を私に投票しないでください」この

SELECT * FROM t_tenancy_details 
WHERE (YEAR(t_tenancy_details) => YEAR(CURRENT_DATE - INTERVAL 1 MONTH) 
AND MONTH(agreement_date) => MONTH(CURRENT_DATE - INTERVAL 1 MONTH)) 
AND (YEAR(t_tenancy_details) <= YEAR(CURRENT_DATE) 
AND MONTH(agreement_date) <= MONTH(CURRENT_DATE)) 
関連する問題