2013-02-18 2 views
2

Так что я хочу сделать, это в основном это:Получение данных за каждый месяц

Месяц и Год:

-Все данные, отправляемые на этот месяц и год

Например: февраля 2013:

-The сообщений на эту дату

марта 2013 года:

-Доставки на эту дату

и так далее.

У меня есть столбец даты на моем столе и имеет следующий формат: 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); 

Это даст мне результаты для даты, но я не могу понять, как поставить правильные данные по каждой дате ,

+0

вам нужно только выполнить 'SELECT * FROM tableName' и formmating будут обрабатываться на' PHP' –

+0

Является ли столбец даты не датой? Это «варчар»? –

+0

да это varchar – cemcetin

ответ

0

Использование DATE_FORMAT Функция mysql.

Пример

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

и затем отладки результат query вы увидите два дополнительных столбца для month и year затем отобразить его в качестве вашего желания.

if date_field is varchar then use str_to_date mysql function.

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

О.П. вопрос обновление

Попробуйте GROUP_CONCAT

SELECT 
*, 
GROUP_CONCAT(created) AS month 
FROM 
table_name 
GROUP BY MONTH(created) DESC;
+0

хорошо, я уже получил эту часть. когда у меня есть год и месяцы, я помещаю их в массив и используя функцию array_unique, я избавился от дубликатов. Теперь я смущен о том, как получить данные за каждый месяц – cemcetin

+0

, пожалуйста, обновите вопрос, чтобы мы могли лучше понять. –

+0

Я отредактировал вопрос. – cemcetin

0
  1. Преобразование поля даты VARCHAR в точную дату, используя str_to_date функции
  2. Использования DATE_FORMAT вы можете выбрать месяц мудрую запись
  3. Где $input является формат %Y-%m // например: 02-2013-> февраль 2013
SELECT * FROM `table` 
WHERE DATE_FORMAT(str_to_date(`date_column`, '%d/%m/%Y'), '%Y-%m')= '".$input."'; 
Смежные вопросы