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 пихаете число. Совесть не мучает?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы