2013-08-11 13 views
13

Mam kolumnę w bazie danych MySQL, która zawiera datę jako milisekundy (epoka). Chcę zbudować zapytanie SQL, które formatuje datę jako coś czytelnego dla człowieka (dzień, miesiąc, rok, godziny, minuty, sekundy w dowolnym formacie i strefie czasowej). Czy istnieje funkcja SQL (lub MySQL), aby to zrobić?MySQL wybierz sformatowaną datę z milisekundy pola

+1

Można użyć funkcji 'from_unixtime' w podzapytaniu. Sprawdź odpowiedź poniżej. – woofmeow

Odpowiedz

28

Spróbuj użyć funkcji FROM_UNIXTIME tak jak podano w manual

 
SELECT FROM_UNIXTIME(1196440219); 
-> '2007-11-30 10:30:19' 

Można również użyć formatowania jak to

 
mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), 
    ->      '%Y %D %M %h:%i:%s %x'); 
    -> '2007 30th November 10:30:59 2007' 
+9

Idealne, dzięki. Mój czas był w milisekundach, więc drobna modyfikacja zrobiła dokładnie to, co chciałem: SELECT FROM_UNIXTIME (\ 'column \'/1000) '. –

+0

Cieszę się, że zadziałało :) – woofmeow

6

Jeśli chcesz uzyskać mikrosekundy z pola, należy użyć% f,

select FROM_UNIXTIME(DATE_COLUMN/1000,'%Y-%M-%d %H:%i:%s %f') from TABLE_NAME; 

+-------------------------------------------------------+ 
| FROM_UNIXTIME(CREATETIME/1000,'%Y-%M-%d %H:%i:%s %f') | 
+-------------------------------------------------------+ 
| 2016-March-18 16:02:54 342000       | 
+-------------------------------------------------------+ 

Źródło: MYSQL DATE_FORMAT

+2

Jeśli dzielisz milisekundy przez 1000, aby zredukować do sekund, czy mikrosekundy nie muszą być 0? – Maura

Powiązane problemy