У меня есть поле в таблице MySQL с timestamp
типом данных. Я сохраняю данные в эту таблицу. Но когда я передаю метку времени ( 1299762201428
) записи, она автоматически сохраняет значение 0000-00-00 00:00:00
в этой таблице.
Как я могу сохранить метку времени в таблице MySQL?
Вот мое INSERT
заявление:
INSERT INTO table_name (id,d_id,l_id,connection,s_time,upload_items_count,download_items_count,t_time,status)
VALUES (1,5,9,'2',1299762201428,5,10,20,'1'),
(2,5,9,'2',1299762201428,5,10,20,'1')
php
mysql
database
sql-insert
гаутамлакум
источник
источник
Ответы:
пройти вот так
источник
datetime
, если вы хотите изменить его, аtimestamp
затем измените тип столбца наvarchar(15)
strtotime
. изменить: кстати, временная метка охватывает только диапазон всех возможных дат (от 1970-01-01 до xx-xx-2032, я думаю)Привет, используйте
FROM_UNIXTIME()
для этого функцию.Как это:
источник
date('Y-m-d H:i:s','1299762201428')
?FROM_UNIXTIME
дает собственный тип даты mysql, в то время как phpdate()
возвращает строку.источник
Некоторые вещи, которые нужно уточнить:
поэтому правильный ответ будет
источник
Тип данных bigint unsigned может соответствовать этому требованию.
источник
Я предполагаю, что поле, в котором вы пытаетесь сохранить значение, является полем даты и времени, это не так, но то же самое, похоже, верно и для временных меток . В таком случае mysql ожидает, что формат будет иметь вид Год-месяц-день Час: минута: секунда. Чтобы сохранить метку времени, вам нужно будет преобразовать поле в числовое, используя запрос типа
Если вы используете текущее время, вы можете использовать now () или current_timestamp.
источник
Вы также можете использовать
now()
в своем запросе, то есть:Он будет использовать текущую метку времени.
источник
Используйте
FROM_UNIXTIME()
.Примечание. 1299762201428 больше похоже на метку времени в миллисекундах (например, Date () * 1 в JavaScript), и вам, вероятно, придется разделить ее на 1000.
источник
Проверьте тип поля в таблице, просто сохраните значение отметки времени в типе данных, например,
bigint
и т. Д.Не
datetime
типисточник
Это должно сделать это:
источник
Если метка времени - текущее время, вы можете использовать
NOW()
функцию mysqlисточник
Используйте
datetime
тип поля. Он имеет множество преимуществ, таких как удобочитаемость (отметки времени никто не читает) и функции MySQL .Чтобы преобразовать метку времени unix, вы можете использовать функцию MySQL
FROM_UNIXTIME(1299762201428)
. Для того, чтобы преобразовать обратно вы можете использоватьUNIX_TIMESTAMP
:SELECT UNIX_TIMESTAMP(t_time) FROM table_name
.Конечно, если вам не нравится , функция MySQL, вы всегда можете использовать PHP:
'INSERT INTO table_name SET t_time = ' . date('Y-m-d H:i:s', $unix_timestamp)
.источник
timestamp
поля также доступен для чтения человеком (при использованииSELECT
в консоли). Они очень разные, и у обоих есть свои недостатки / преимущества. Основное различие заключается в том, как обрабатываются часовые пояса.datetime
по разным причинам. Что, по вашему мнению, является самым большим недостатком / преимуществом?timestamp
: он лучше соответствует временным меткам PHP, поскольку он невосприимчив к настройкам часового пояса как сервера, так и клиента, тогда какdatetime
изменяет отображаемое значение в зависимости от часового пояса вашего клиента MySQL (конечно, это зависит от вашего проекта, который один лучше). Самый большой недостатокtimestamp
: он не поддерживает значения NULL и (я не знаю, что они курили, когда программировали это)TIMESTAMP NOT NULL
поле становитсяTIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
. В моем случае мне, к сожалению, нужно использоватьTIMESTAMP
по причинам TZ.Лучше использовать тип данных
varchar(15)
.источник
Вы можете сделать:
$date = \gmdate(\DATE_ISO8601);
.источник
Если я знаю, что это база данных MySQL, я буду использовать функцию NOW () следующим образом:
источник