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

0

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

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

  • 2
    Не. Значения DateTime должны храниться как DateTime. Если у вас нет действительно веской причины хранить их иначе (например, для поддержки значений даты и времени вне минимального / максимального значений datetime), я бы посоветовал оставить его в столбце DateTime.
  • 0
    UNIX_TIMESTAMP & FROM_UNIXTIME плюс умножение / деление * / 1000
Показать ещё 3 комментария
Теги:

1 ответ

1
Лучший ответ

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

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

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

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

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

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

  • 0
    Отлично, если в моем случае я должен использовать datetime и UNIX_TIMESTAMP чтобы получить дату в секундах, или умножить это на 1000, чтобы получить в миллисекундах. Я понял. Спасибо!
  • 0
    Знаете ли вы какую-либо СУБД, которая не игнорирует високосные секунды, т.е. разница между «2018-07-01 00:00:01» и «2018-06-30 23:59:59» составляет три секунды вместо двух?
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню