Як конвертувати часову позначку в дату в MySQL?


133

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


2
Будь ласка, шукайте наявні запитання / відповіді, перш ніж публікувати нове запитання - ця тема вже була висвітлена в деяких деталях.
Джон Паркер

2
Ви вже переглянули документацію? Це все там: dev.mysql.com/doc/refman/5.5/uk/date-and-time-functions.html
Фелікс Клінг

Відповіді:


200

Використовувати FROM_UNIXTIME() функцію в MySQL

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


1
SELECT from_unixtime( TIMESTAMP( "2011-12-01", "22:01:23.048" ) )не працює. чому? використовуючи v5.6
Janus Troelsen

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`
Веб-розробник

Я майже впевнений, що DATE_FORMAT (FROM_UNIXTIME ( orderdate), '% Y-% m-% d') як "Дата" ВІД ordersбуде остаточним рішенням: D
Кайл

14

Щоб відповісти на коментар Януса Троельсена

Використовуйте UNIX_TIMESTAMP замість TIMESTAMP

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

Функція TIMESTAMP повертає дату або дату, а не часову позначку, тоді як UNIX_TIMESTAMP повертає часову позначку unix


видається зрозумілим порівняння часу unix з часом unix. Я використовую SELECT (CAST (DATE_FORMAT (від_unixtime (UNIX_TIMESTAMP (CURRENT_TIMESTAMP))), "% Y-% m-% d") як DATE) <CAST ('2019-05-02' AS DATE)); щоб порівняти дати, я замінюю 2019-05 * 02 відформатованим об’єктом datetime у php. Тонки.
Мантіс

1
Будь ласка, не відповідайте таким чином на інше питання, ніж на оригінальне.
Paweł Stankowski

Це ніяк не відповідає на початкове запитання
Ніко Хааз


3

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.