Я вычисляю еженедельные значения, сравнивающие последнюю неделю и те же дни в предыдущем году. Поскольку у нас просто високосный год, мой подход вызывает проблемы.Дата PHP: Проблема с расчетной датой в течение високосного года
Я расчет даты, как это и выполнить соответствующий выбор:
$today_raw = date('Y-m-d');
$yearAgo = date('Y-m-d', strtotime('-1 year', strtotime($today_raw)));
$weekAgo = date('Y-m-d', strtotime('-6 day', strtotime($today_raw)));
$weekYearAgo = date('Y-m-d', strtotime('-1 year', strtotime($weekAgo)));
$stmt_currentWeek = $pdo->prepare("SELECT X FROM Y WHERE Z BETWEEN '$weekAgo' AND '$today'");
$stmt_weekLastYear = $pdo->prepare("SELECT X FROM Y WHERE Z BETWEEN '$weekYearAgo' AND '$yearAgo'");
Очевидно, что SELECT
возвращает неверное число значений, $weekYearAgo
просто неправильна, поскольку он не отражает различия високосного года.
Что я делаю неправильно?
Почему вы не используете объект dateTime, который находится внутри PHP? он должен решить вашу проблему. – RFLdev
Являются ли временные метки в вашей базе данных того же часового пояса, что и дата установки в вашем 'php.ini'? Если нет, вам необходимо согласовать дату php перед отправкой в базу данных. – Daniel
Почему вы не используете встроенные функции даты SQL? Им нужно иметь дело с этим. Что-то вроде 'NOW() - INTERVAL 1 YEAR' – apokryfos