Прежде всего вам необходимо понять разницу между date()
, time()
и mktime()
.
date()
используется только для отображения. Никогда не используйте его для математических манипуляций.
time()
возвращает текущее значение timestamp
(int
представляет текущее время и дату).
mktime()
без каких-либо параметров совпадает с time()
. С параметрами, это позволяет вам получить timestamp
за установленное время. Параметры в следующем порядке: час, минута, секунда, месяц, день, год.
Теперь ваши вопросы :
Вопрос 1
Чтобы манипулировать временем, вы можете сделать следующее:
$today = mktime(0,0,0); //Today, time neutral
$otherDate = mktime(0, 0, 0, 6, 26, 2008); //2008-06-26, time neutral
$secondsBetweenDates = $today - $otherDate;
Вопрос 2
Вам лучше делать что-то подобное прямо в вашем SQL. Вот способы, которыми вы можете сделать это для двух наиболее распространенных серверов баз данных, работающих на PHP. Я предполагаю, что DateSubscribed
имеет правильный тип данных.
--- MySQL
DELETE FROM `subscribers`
WHERE NOW() < DATE_ADD(`DateSubscribed`, INTERVAL 1 WEEKS);
--- PostgreSQL
DELETE FROM "subscribers"
WHERE CURRENT_TIMESTAMP < ("DateSubscribed" + interval '1 week');
Вопрос 3
Это зависит от вашей СУБД. Вот страницы документации, относящиеся к функциям даты / времени для MySQL и PostgreSQL