2013-08-11 2 views
0

У меня есть столбец в таблице с именем Contacted, в котором содержится дата контакта, отформатированная как Y-m-d. Я хочу, чтобы мой файл cronjob принимал только те записи, где Contacted было 7 дней назад. Поэтому я делаю этоГде предложение с математикой

$checkstat = "Contacted"; 
$checkdate = date("Y-m-d"); 
$result = mysql_query("SELECT * FROM data WHERE Status = '$checkstat' AND Contacted - '$checkdate' = 7"); 

Но это не работает. Идея заключается в том, чтобы вычесть даты, и результат должен быть равен 7, если прошло 7 дней, но ничего не приносит. В чем может быть проблема?

+2

Возможно, вам придется использовать функцию mySQL DATEDIFF. – DevlshOne

+0

Какой тип данных связан с вашим столом? –

+0

Указанный тип данных даты, отформатированный Y-m-d так же, как и checkdate. Так что я не могу просто вычесть? –

ответ

1

Вместо вычитания в MySQL и повторения этой операции для каждой строки, почему бы просто не отправить дату «семь дней с этого момента»?

Что-то вроде этого:

$date = date('Y-m-d'); 
$seven_days_from_today = date('Y-m-d', strtotime("+7 days", strtotime($date))); 

// Your query 
$result = mysql_query("SELECT * FROM data WHERE Status = '$checkstat' AND Contacted = '$seven_days_from_today'"); 

Side Примечание: mysql_ функции устарели. Пожалуйста, начните изучать использование mysqli или pdo.

+0

Мне нужно немного изменить его , 3 cron jobs, 2-й запуск через 7 дней после первого, через 3-7 дней после 2-го. Таким образом, задача 1-го часа должна была бы добавить seven_days_from_now, а вторая cron проверила бы, сегодня ли это семь дней. Позвольте мне попытаться закодировать это и вернуться к решению, спасибо. Кстати, мой первый сайт когда-либо, поэтому я не знал, что функции mysql_ устарели =) –

+0

Это сработало! Я добавил еще один столбец «todo», чтобы кроны знали, какой из них нужно запускать (они сканируют db каждый день, чтобы они не перекрывались) Cron номер 1: установить 7 дней в столбце до 7 дней с момента запуска, установить todo для Cron 2 Cron number 2: проверьте, установлен ли 7 дней с сегодняшнего дня, проверьте, установлено ли todo для cron 2, если да, установите 7 дней с этого момента и установите todo для cron 3 Cron number 3: проверьте, не прошло ли 7 дней сегодня, проверьте, установлен ли todo для cron 3, если да выполняется. Большое вам спасибо! –

+0

Добро пожаловать. Теперь, когда это cron, очень легко забыть использование 'mysql_'. Я добавил ссылки на mysqli и pdo в своем ответе. – vee

0

Вы можете определить столбец «Contacted» как int, а затем использовать функции PHP, такие как strtodate() и datetostr(), ... для преобразования этого целого в любой желаемый формат и выполнять арифметические операции над ним.
Например, вы можете использовать функцию PHP date («u»), это вернет время как целое число, чтобы вы могли легко сохранить его в БД и манипулировать им.

Смежные вопросы