PDO — вставка UNIX_TIMESTAMP в базу данных

Я пытаюсь вставить время регистрации в базу данных с помощью 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 в БД.

-1

Решение

Функция СЕЙЧАС() генерирует отформатированную строку даты и времени, определенную часовым поясом вашего сервера MySQL. Если вы получаете

0000-00-00 00:00:00

возможно ваш часовой пояс не настроен

По моему мнению, было бы лучше хранить времена, используя UNIX_TIMESTAMP (), который в GMT.

Если вы все еще хотите использовать столбцы DATETIME, вы можете сохранить время, используя UTC_TIMESTAMP () (форматирует дату как СЕЙЧАС() но выражает это в UTC); это должно более или менее работать одинаково во всех других аспектах.

0

Другие решения

Если вы хотите сохранить свои даты в качестве временной метки, вам необходимо использовать поле INTEGER, поскольку UNIX_TIMESTAMP хранится как целое число (в частности, количество секунд с 1-1-1970)

Если вы используете поле DATETIME, оно всегда будет сохранено как отформатированная дата.

0

По вопросам рекламы [email protected]