У меня есть следующий запрос:Как проверить, если текущая дата и другие даты длиннее 1 месяца назад?
$data = mysql_fetch_array(mysql_query("SELECT
c.`id` AS cid,
p.`id` AS pid,p.`email`
FROM `coupons` AS c
LEFT JOIN `coupons_partners` AS cp ON cp.`cid` = c.`id`
LEFT JOIN `partners` AS p ON p.`id` = cp.`pid`
LEFT JOIN `bills` AS b ON b.`pid` = p.`id`
WHERE
(
CURRENT_DATE() BETWEEN c.`expires` AND ADDDATE(c.`expires`, INTERVAL 1 MONTH)
)
OR
(
CURRENT_DATE() NOT BETWEEN c.`expires` AND ADDDATE(c.`expires`, INTERVAL 1 MONTH)
AND
CURRENT_DATE() BETWEEN b.`date` AND ADDDATE(b.`date`, INTERVAL 1 MONTH)
)
ORDER BY b.`id` DESC"));
Это немного грязный. Я хочу сделать cronjob и создавать счета автоматически. Они должны создаваться только через 1 месяц, срок действия купона истекает (c. expires
- DATETIME
), или если LAST bill (b. date
) был создан 1 месяц назад. Дело в том, что я не хочу создавать какие-либо счета, если купон еще не начался. И это возможно, потому что я создаю купоны, которые начнутся через 3 месяца. Итак, я думаю, что «Между-решение» здесь не подходит?
Я пытаюсь понять это правильно, но теперь я буду признателен за любую помощь.
Я был бы счастлив и благодарен, если бы кто-то мог мне помочь.
С наилучшими пожеланиями,
Alex
Я попытался 'DATEDIFF (месяц, CURRENT_DATE(), c.expires)', но он не любит 'CURRENT_DATE()'. Знаете ли вы, что я должен поставить там на текущую дату? – Vay
Я думаю, вы не имели в виду MySQL? Потому что, как и в документах MySQL, допускается только два выражения. Поэтому я могу получить дни с 'DATEDIFF (CURDATE(), c.expires)', но не точно месяц с выходом из одного. Разве это невозможно преобразовать его в месяц в MySQL? – Vay