Як конвертувати часову позначку в дату в 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.