#php #codeigniter-3
#php #codeigniter-3
Вопрос:
Я работаю с проектом Codeigniter3, где я сохранил данные в виде целого числа, используя следующий формат
strtotime(date('Y-m-d H:i'))
Теперь я хочу извлечь данные из своей базы данных на основе сегодняшней даты, которая не работает.
Я использовал следующий код для извлечения сегодняшней записи
select * from user where created=strtotime(date('Y-m-d'))
Пожалуйста, помогите мне решить эту проблему
Комментарии:
1. используйте меньше и больше, чем как
created >= strtotime(date('Y-m-d')."00:00")
Иcreated <= strtotime(date('Y-m-d')."23:59")
2. Лучше всего хранить дату и время в соответствующем типе поля. Смотрите: dev.mysql.com/doc/refman/8.0/en/datetime.html
Ответ №1:
Прямо сейчас вы сохраняете временную метку unix — секунды с 1970 года — так что она будет соответствовать только ровно 1 секунде в следующий день.
В идеале вы должны хранить дату в формате, который (мой) sql распознает как формат даты, чтобы вы могли легко запрашивать базу данных.
С меткой времени unix, которая у вас есть сейчас, вам нужно было бы преобразовать ее в формат DateTime и получить из нее часть даты.
В MySQL:
select * from user where DATE(FROM_UNIXTIME(created)) = DATE(FROM_UNIXTIME(:your_timestamp))
Комментарии:
1. jeroen, DATE(FROM_UNIXTIME(создано)) = my sql this в виде строки и возвращает значение 0
Ответ №2:
Попробуйте это-
$this->db->query("SELECT * FROM user WHERE created BETWEEN ".strtotime(date('Y-m-d').'00:00')." AND ".strtotime(date('Y-m-d').'23:59'));
Комментарии:
1. @surma Рад, что это помогло. Пожалуйста, примите ответ. Удачного кодирования.
2. куда нажать, чтобы сделать это ответом
3. @surma ты достаточно умен, чтобы разобраться в этом. 😉