Как преобразовать метку времени в дату и время в MySQL?


133

Как конвертировать 1300464000в 2011-03-18 16:00:00в MySQL?


2
Пожалуйста, найдите существующие вопросы / ответы, прежде чем размещать новый вопрос - эта тема уже была рассмотрена достаточно подробно.
Джон Паркер

2
Вы уже ознакомились с документацией? Это все есть: dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Феликс Клинг,

Ответы:


201

Используйте FROM_UNIXTIME()функцию в MySQL

Помните, что если вы используете фреймворк, который хранит его в миллисекундах (например, временная метка Java), вам нужно разделить на 1000, чтобы получить правильное время Unix в секундах.


1
SELECT from_unixtime( TIMESTAMP( "2011-12-01", "22:01:23.048" ) )не работает. Зачем? с использованием v5.6
Янус Троелсен

3
@JanusTroelsen SELECT from_unixtime( unix_timestamp(TIMESTAMP( "2011-12-01", "22:01:23.048" ) ) )работает. TIMESTAMP()не возвращает целочисленное значение.
cnvzmxcvmcx

4
Просто потому, что я сделал это и был сбит с толку на выходе: MySQL хранит время Unix в секундах, тогда как многие другие фреймворки хранят его в миллисекундах (то есть отметку времени Java). Так что просто не забудьте разделить на 1000, если вы используете эту функцию для данных, поступающих откуда-то, где для времени Unix используются миллисекунды.
Крис Томпсон,

64
DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%Y-%m-%d %H:%i:%s') as "Date" FROM `orders`

Это окончательное решение, если данная дата находится в закодированном формате, например 1300464000


3
Спасибо за это. Чтобы DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%d-%m-%Y %H:%i:%s') as "Date" FROM `orders`
JNP Web Developer

Я почти уверен, что DATE_FORMAT (FROM_UNIXTIME ( orderdate), '% Y-% m-% d') в качестве «Date» FROM ordersбудет лучшим решением: D
Кайл

14

Чтобы ответить на комментарий Януса Троельсена

Используйте UNIX_TIMESTAMP вместо TIMESTAMP

SELECT from_unixtime( UNIX_TIMESTAMP(  "2011-12-01 22:01:23.048" ) )

Функция TIMESTAMP возвращает дату или DateTime, а не метку времени, а UNIX_TIMESTAMP возвращает метку времени unix.


кажется очевидным сравнить время unix с временем unix. Я использую SELECT (CAST (DATE_FORMAT (from_unixtime (UNIX_TIMESTAMP (CURRENT_TIMESTAMP)), '% Y-% m-% d') as DATE) <CAST ('2019-05-02' AS DATE)); для сравнения дат я заменяю 2019-05 * 02 на форматированный объект datetime в php. Thnaks.
Mantisse

1
Пожалуйста, не отвечайте таким образом на вопрос, отличный от исходного.
Павел Станковский

Это никоим образом не отвечает на исходный вопрос
Нико Хаасе


3

SELECT from_unixtime( UNIX_TIMESTAMP(fild_with_timestamp) ) from "your_table"
Эта работа для меня

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.