Mysql запрос диапазона дат только проверить дату без проверки месяца и года

Я хочу в отдельных записях, основанных только на дате и дате, без проверки месяца и года.

Table structure
------------------------------------
id | user_id  | amount | created_on
------------------------------------

Если я выберу дату с 15 апреля по 25 апреля, тогда мне понадобится запись с 15 апреля по 25 апреля, с 15 марта по 25 марта и так далее.

Кажется, довольно просто выбрать день за днем ​​и сравнить его с

Select sum(amount) from sales where DATEFORMAT(created_on, %d) >= 15 and DATEFORMAT(created_on, %d) <=25

Но как найти записи, когда я выбираю дату с 28 марта по 5 апреля, тогда мне нужны данные с 28 февраля по 5 марта, с 28 января по 5 февраля … и так далее

0

Решение

Если вы используете php с ним. Вы можете сравнить минимальные и максимальные даты и изменить свой запрос следующим образом:

Попытка № 1:

    $min_date = 15;
$max_date = 25;

Попытка № 2:

    $min_date = 28;
$max_date = 5;

Автор сценария:

    if($min_date < $max_date)
{
$query = "Select sum(amount) from sales where DATEFORMAT(created_on, %d) >= $min_date and DATEFORMAT(created_on, %d) <=$max_date";
}
else
{
$query = "Select sum(amount) from sales where DATEFORMAT(created_on, %d) >= $min_date OR DATEFORMAT(created_on, %d) <=$max_date";
}
1

Другие решения

Вы можете использовать SQL между оператором

Select sum(amount) from sales where created_on BETWEEN '2017/03/28'  and '2017/04/05'

Источник SQL между оператором

0

Вы можете попробовать это? (X1 и X2 ваши значения)

Select sum(amount)
from sales
where
(1= CASE WHEN X2>=X1 THEN 1 ELSE 0 END AND DATEFORMAT(created_on, %d) >= X1 and DATEFORMAT(created_on, %d) <=x2)
OR (1= CASE WHEN X2<X1 THEN 1 ELSE 0 END AND ( DATEFORMAT(created_on, %d) >=X1 OR DATEFORMAT(created_on, %d) <=X2))
0

используйте это, чтобы извлечь только дату из вашей временной метки, а затем сравнить ее с вашим требованием.

выберите SUBSTRING (дата (CURRENT_TIMESTAMP), 9, 2), SUBSTRING (дата (‘2017-04-27’), 9, 2)

ВЫХОД: 27, 27

Ура !!

-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector