Как сохранить дату в миллисекундах Unix в Mysql?

Как сохранить текущую дату в MYSQL в UNIX миллисекундах, как эта дата: 1388880000000?

Теперь я храню это в datetime.

1 ответ

Решение

Не. DateTime значения должны быть сохранены как DateTime, если только у вас нет веской причины хранить их иначе (например, для поддержки значений даты и времени за пределами минимальных / максимальных значений DateTime Я бы посоветовал оставить это в DateTime колонка.

Вы всегда можете манипулировать тем, как вы возвращаете их из базы данных во время Select или на уровне представления. Чтобы вернуть время Unix из DateTime MySql предоставляет встроенный метод под названием UNIX_TIMESTAMP, Чтобы вернуть количество миллисекунд, просто умножьте на 1000, поскольку метка времени unix - это количество секунд с 1 января 1970 года (не считая високосных секунд). Если вы хотите сохранить время Unix, вам придется использовать тип данных int.

Обратите внимание, что если вы сохраняете время Unix вместо сохранения фактического DateTime значение в DateTime столбец типа данных, вы потеряете возможность легко использовать все встроенные в базу данных функции datetime. Например, если вы хотите узнать, сколько строк принадлежит определенному месяцу, вам сначала нужно будет перевести данные из int в datetime, и только после этого вы сможете рассчитать это.

Вы также потеряете точность (поскольку время unix неточно даже при разрешении в 1 секунду, поскольку оно игнорирует високосные секунды).

Итак, в заключение - когда база данных предлагает вам тип данных, который соответствует данным, не храните эти данные, используя другой тип данных. использовать Date тип данных, если вы хотите сохранить только даты, DateTime тип данных, если вы хотите сохранить значения даты и времени, и TimeТип данных, если вы хотите сохранить определенное время в день.

PS
При работе со значениями даты и времени, особенно если вам приходится иметь дело с клиентами из разных мест, ВСЕГДА сохраняйте в вашей базе данных только дату и время по Гринвичу, если, конечно, вы не хотите сходить с ума.

Другие вопросы по тегам