Я пытаюсь вставить время регистрации в базу данных с помощью PDO.
Вот мой код
<?php
$sql = "INSERT INTO members(firstname,email,pass_hash,user_activation_hash,user_registration_datetime,user_registration_ip,user_agent) VALUES(:fname,:email,:passhash,:user_activation_hash,now(),:user_registration_ip,:user_agent)";
$result = $dbh->prepare($sql);
$result->execute( array(':fname'=>$fname,':email'=>$email,':passhash'=>$hdacc,':user_activation_hash'=>$user_activation_hash,':user_registration_ip'=>$ip,':user_agent'=>$user_agent));
Это вставляет user_registration_datetime в формате 2014-09-19 16:20:21, но я хочу его в формате UNIX_TIMESTAMP. Вот то, что я пытался,
UNIX_TIMESTAMP (NOW()) // instead of now()
Это не работает для меня. Это просто вставка 0000-00-00 00:00:00 в БД.
Функция СЕЙЧАС() генерирует отформатированную строку даты и времени, определенную часовым поясом вашего сервера MySQL. Если вы получаете
0000-00-00 00:00:00
возможно ваш часовой пояс не настроен
По моему мнению, было бы лучше хранить времена, используя UNIX_TIMESTAMP (), который в GMT.
Если вы все еще хотите использовать столбцы DATETIME, вы можете сохранить время, используя UTC_TIMESTAMP () (форматирует дату как СЕЙЧАС() но выражает это в UTC); это должно более или менее работать одинаково во всех других аспектах.
Если вы хотите сохранить свои даты в качестве временной метки, вам необходимо использовать поле INTEGER, поскольку UNIX_TIMESTAMP хранится как целое число (в частности, количество секунд с 1-1-1970)
Если вы используете поле DATETIME, оно всегда будет сохранено как отформатированная дата.