Jak przekonwertować znacznik czasu na datę i godzinę w MySQL?


137

Jak przekonwertować 1300464000na 2011-03-18 16:00:00w MySQL?


2
Poszukaj istniejących pytań / odpowiedzi, zanim opublikujesz nowe pytanie - ten temat został już szczegółowo omówiony.
John Parker,

2
Czy już obejrzałeś dokumentację? Wszystko tam jest: dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Felix Kling

Odpowiedzi:


205

Użyj FROM_UNIXTIME()funkcji w MySQL

Pamiętaj, że jeśli używasz frameworka, który przechowuje go w milisekundach (na przykład znacznik czasu Javy), musisz podzielić przez 1000, aby uzyskać właściwy czas uniksowy w sekundach.


1
SELECT from_unixtime( TIMESTAMP( "2011-12-01", "22:01:23.048" ) )nie działa. czemu? używając wersji 5.6
Janus Troelsen

3
@JanusTroelsen SELECT from_unixtime( unix_timestamp(TIMESTAMP( "2011-12-01", "22:01:23.048" ) ) )działa. TIMESTAMP()nie zwraca wartości całkowitej.
cnvzmxcvmcx

4
Tylko dlatego, że zrobiłem to i pomyliłem się na wyjściu: MySQL przechowuje czas Unixa w sekundach, podczas gdy wiele innych frameworków przechowuje go w milisekundach (np. Znacznik czasu Javy). Więc pamiętaj, aby podzielić przez 1000, jeśli używasz tej funkcji na danych pochodzących z miejsca, w którym używa się milis dla czasu uniksowego.
Chris Thompson

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

To najlepsze rozwiązanie, jeśli podana data jest zakodowana w formacie 1300464000


3
Dzięki za to. Obejmuje czas: DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%d-%m-%Y %H:%i:%s') as "Date" FROM `orders`
JNP Web Developer

Jestem prawie pewien, że DATE_FORMAT (FROM_UNIXTIME ( orderdate), '% Y-% m-% d') jako „Data” FROM ordersbędzie ostatecznym rozwiązaniem: D
Kyle

15

Aby odpowiedzieć na komentarz Janusa Troelsena

Użyj UNIX_TIMESTAMP zamiast TIMESTAMP

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

Funkcja TIMESTAMP zwraca datę lub datę i godzinę, a nie znacznik czasu, podczas gdy UNIX_TIMESTAMP zwraca unixowy znacznik czasu


wydaje się jasne porównanie czasu uniksowego z czasem uniksowym. Używam SELECT (CAST (DATE_FORMAT (from_unixtime (UNIX_TIMESTAMP (CURRENT_TIMESTAMP))), '% Y-% m-% d') jako DATE) <CAST ('2019-05-02' AS DATE)); aby porównać daty, zastępuję 2019-05 * 02 sformatowany obiekt datetime w php. Thnaks.
Mantisse

1
Proszę nie odpowiadać w ten sposób na pytanie inne niż pierwotne.
Paweł Stankowski

To w żaden sposób nie odpowiada na pierwotne pytanie
Nico Haase


3

SELECT from_unixtime( UNIX_TIMESTAMP(fild_with_timestamp) ) from "your_table"
Ta praca dla mnie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.