У меня есть столбец в моей базе данных mySQL, в котором есть несколько строк. Одна из этих строк - это ДАТА, например:2012-02-01
Я хочу сделать SELECT с PHP только на основе года и месяца.
Логика ВЫБОРА будет следующей:
$q="SELECT * FROM projects WHERE Date="SELECT HERE THE SPECIFIC YEAR AND MONTH"";
Конкретный месяц и год будут передаваться из $_POST
переменной, например$_POST['period']="2012-02";
Как мне это сделать?
Ответы:
источник
EXTRACT(YEAR_MONTH FROM Date)
?Если у вас есть
Сначала найдите первый день месяца:
Затем этот запрос будет использовать индекс,
Date
если он у вас есть:Можно также использовать инклюзивно-исключающие интервалы, которые работают довольно хорошо (вам не нужно беспокоиться, если столбец
DATE
,DATETIME
илиTIMESTAMP
, ни о точности:Предупреждение безопасности:
Вы должны правильно экранировать эти значения или использовать подготовленные операторы. Короче говоря, используйте любой метод, рекомендованный в наши дни в PHP, чтобы избежать проблем с SQL-инъекциями.
источник
Ну вот. Оставьте вычисления PHP и сохраните свою БД. Таким образом можно эффективно использовать индекс
Date
столбца.ИЗМЕНИТЬ
Забыл преобразование метки времени Unix.
источник
$end = strtotime($date .' 1 month - 1 second');
источник
Предположим, у вас есть поле базы данных created_at, где вы берете значение из отметки времени. Вы хотите выполнить поиск по году и месяцу с даты created_at.
источник
Здесь НАЙТИ запись по МЕСЯЦУ и ДАТЕ в mySQL
Вот ваше значение POST
$_POST['period']="2012-02";
Просто взорвите значение тире
$Period = explode('-',$_POST['period']);
Получить массив из значения разнесения:
Array ( [0] => 2012 [1] => 02 )
Введите значение в SQL-запрос:
SELECT * FROM projects WHERE YEAR(Date) = '".$Period[0]."' AND Month(Date) = '".$Period[0]."';
Получите результат по МЕСЯЦУ и ГОДУ.
источник
чтобы получить значения месяца и года из столбца даты
источник
Сделать можно так:
источник
Логика будет такая:
LIKE
Оператор выбирает все строки , которые начинаются с$_POST['period']
последующим тиром и день Монтаhttp://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html - Некоторая дополнительная информация
источник
Вот запрос, который я использую, и он вернет каждую запись за период в виде суммы.
Вот код:
Здесь перечислены каждый emp_nr и сумма часов, которые они накопили за месяц.
источник
вы можете сделать это, изменив $ q на это:
источник
Да, это работает, но возвращает только одну строку, в то время как есть несколько строк для извлечения, используя только выбранные столбцы. Подобно SELECT Title, Date FROM mytable WHERE YEAR (Date) = 2017 AND MONTH (Date) = 09 возвращает только одну строку.
источник