Задать вопрос

Вычисления datetime if()?

Подскажите как как в if($date < время) {}
Если у меня в базе установлено datetime , отображение 2024-05-20 12:45:53 ., не могу сделать вычисления.
  • Вопрос задан
  • 122 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$now = new DateTimeImmutable();
var_dump(new DateTimeImmutable('2024-05-20 12:45:53') < $now);
// bool(true)
Ответ написан
@alekssamos
Программист любитель
$date = '2024-05-20 12:45:53';

$sql = "SELECT * FROM your_table WHERE your_datetime_column < ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('s', $date);
$stmt->execute();

$result = $stmt->get_result();

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"] . " - Дата: " . $row["your_datetime_column"] . "<br>";
    }
} else {
    echo "Пусто";
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@alexalexes
Если нужно в php сравнивать даты, то из базы отдельным полем приводите любую дату в формат YmdHis и можете сравнивать значения как строки:
if($date < date('YmdHis'))
{
}

Будет работать железобетонно на любой версии php.
Ответ написан
cyber-jet
@cyber-jet
Мой рецепт, хранить в базе Unix Timestamp, time() - чтобы получить Unix timestamp в php. Но если так случилось что в базе дата хранится в формате date time, есть два способа это исправить, либо сделать запрос к базе с функцией конвертации SELECT UNIX_TIMESTAMP(dateTimeFieldName), либо воспользоваться функцией php strtotime($mysqltime) для конвертации в Unix timestamp.

PS: "...отсчитать определённое время, например 30 минут чтобы сделать определённое действие..."
if($date < date("Y-m-d H:i:s", time() - 1800) ) {
   // Ранее 1800 сек от текущего времени
}

или:
if(strtotime($date) < (time() - 1800) ) {
   // Ранее 1800 сек от текущего времени
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы