Как сохранить текущую дату в MYSQL в миллисекундах UNIX, как эта дата: 1388880000000?
Теперь я храню это в datetime.
Не. Значения 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 в вашей базе данных, если, конечно, вы не хотите сойти с ума.
datetime
и UNIX_TIMESTAMP
чтобы получить дату в секундах, или умножить это на 1000, чтобы получить в миллисекундах. Я понял. Спасибо!
UNIX_TIMESTAMP
&FROM_UNIXTIME
плюс умножение / деление * / 1000