меняя метку времени SQL на d-m-Y в php - PullRequest
0 голосов
/ 14 сентября 2018

В моей базе данных я использую CURRENT_TIMESTAMP, чтобы отслеживать даты регистрации для моих новых пользователей. Теперь я хочу сформировать список пользователей, которые зарегистрировались за последние 7 или 30 дней. Я подумал, что это будет так же просто, как объяснено в этой теме; Получите 30 дней назад с указанием времени

Но мой текущий код генерирует неожиданный вывод.

                for($i = 0; $i < $userlenght; $i++){
                    $comparedate = strtotime(date('Y-m-d', $user[$i]["date"]));
                    echo $comparedate . "<br/>";
                    if($user[$i]["date"] > $last){
                        //do stuff here with the users who match.
                    }
                }

Это отображает значение сравнения $ как "-3600", и я понятия не имею, почему.

Может ли кто-нибудь дать некоторое представление?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Ваша проблема в том, что $user[$i]['date'] является меткой времени MySQL, которая выглядит как 2018-09-14 11:09:10 и не является допустимым входным значением для date. Вы можете просто удалить звонок на date и ваш код должен работать нормально:

$comparedate = strtotime($user[$i]["date"]);
0 голосов
/ 14 сентября 2018

SQL Timestamp возвращается в формате строки, поэтому вам нужно указать PHP прочитать строку как значение в формате даты.Для этого вам нужно использовать strtotime().

Попробуйте следующее:

for($i = 0; $i < $userlenght; $i++){
       $comparedate = strtotime(date('Y-m-d', strtotime($user[$i]["date"])));
       echo $comparedate . "<br/>";
       if($user[$i]["date"] > $last){
             //do stuff here with the users who match.
       }
}
...