2

だから私がやりたいことは基本的にこれです:

月と年:

- その月と年に送信されたすべてのデータ

例: 2013 年 2 月:

・この日の投稿

2013 年 3 月:

・この日の投稿

等々。

テーブルに日付列があり、次の形式になっています: day.month.year

PHPとMySQLを使用しています。

私が使用している独自の MVC フレームワークがあります。ここでは分かりやすいように簡略化します。データを取得する関数:

function selectAll($sql){

    $find = $this->prepare($sql);     
    $find->execute();                      
    $fetchdata = $find->fetchAll(PDO::FETCH_ASSOC);        
    return $fetchdata;
}

そして、日付を取得するコード:

    $sql = "Select YEAR(Date) AS year, MONTH(Date) AS month, Headline from blog";
$data =  $this->db->selectAll($sql);
foreach($data as $key => $value) { 
        $date[] = $value['month'].'.'.$value['year'];

        }
$dateunique = array_unique($date);

これにより、日付の結果が得られますが、各日付の下に正しいデータを配置する方法がわかりません。

4

2 に答える 2

0

DATE_FORMATmysql 関数を使用します。

SELECT DATE_FORMAT(date_field,'%M') as Month,DATE_FORMAT(date_field,'%Y') as Year FROM table_name

デバッグ結果には、query2 つの余分な列が表示され、必要に応じmonthyear表示されます。

その場合date_fieldは、 mysql 関数varcharを使用します。str_to_date

SELECT STR_TO_DATE(date_field,'%M') as Month, STR_TO_DATE(date_field,'%Y') as Year FROM table_name;

OP質問の更新

試すGROUP_CONCAT

SELECT
*,
GROUP_CONCAT(created) AS month
FROM
table_name
GROUP BY MONTH(created) DESC;
于 2013-02-18T03:53:04.327 に答える
0
  1. str_to_date関数を使用して、varchar 日付フィールドを正確な日付に変換し ます
  2. DATE_FORMATを使用すると、月単位のレコードを選択できます
  3. フォーマット // 例: 02-2013-> 2013 年$input2月%Y-%m
SELECT * FROM `table` 
WHERE DATE_FORMAT(str_to_date(`date_column`, '%d/%m/%Y'), '%Y-%m')= '".$input."';
于 2013-02-18T03:54:32.113 に答える