medbrat69
@medbrat69
Основатель toster.ru

Кто сможет объяснить мистическое поведение phpMyAdmin?

Всем привет. Сам я занимаюсь серверным программированием недавно. Понадобилось сохранять временную метку во время записи отзыва в базу. Почитал маны, создал столбец date_review c типом TIMESTAMP, добавил запись через phpMyAdmin, передав в таймштамп функцию NOW(). В ячейке появилось что-то типа "2019-05-20 10:00:00".
Позже понял, что это не совсем то, что мне нужно, ибо на сервере я форматирую дату функцией date() из php. Немного погуглив, нашел пост, в котором говорилось, что всем известную метку в секундах с 01.01.1970 года дает функция UNIX_TIMESTAMP.
Я попытался сделать запись, передав в таймштапм эту функцию, но в записалось не количество секунд, а "0000-00-00 00:00:00". То есть, как будто функция NOW() отработала неправильно.
Также phpMyAdmin выкинул ошибку Warning: #1265 Data truncated for column 'date_review' at row 1. В чем трабл?
  • Вопрос задан
  • 104 просмотра
Решения вопроса 2
delphinpro
@delphinpro Куратор тега PHP
frontend developer
поле с типом timestamp хранит метку времени, 4 байта. всегда в utc, таймзона корректируется автоматом при сохранении/чтении.
Для добавления записи используйте NOW() для сохранения метки текущего момента времени. При чтении, если вам нужно получить unix time, приводите читаему метку к нужному виду:

SELECT UNIX_TIMESTAMP(date_review) AS ts_date_review FROM …


в результатах будет поле ts_date_review с unix time
Ответ написан
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Вам нужно для этого поле типа integer, а вы в поле datetime пихаете число. Совесть не мучает?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽