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.
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
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
Odpowiedzi:
Użyj
FROM_UNIXTIME()
funkcji w MySQLPamię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.
źródło
SELECT from_unixtime( TIMESTAMP( "2011-12-01", "22:01:23.048" ) )
nie działa. czemu? używając wersji 5.6SELECT from_unixtime( unix_timestamp(TIMESTAMP( "2011-12-01", "22:01:23.048" ) ) )
działa.TIMESTAMP()
nie zwraca wartości całkowitej.To najlepsze rozwiązanie, jeśli podana data jest zakodowana w formacie
1300464000
źródło
DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%d-%m-%Y %H:%i:%s') as "Date" FROM `orders`
orderdate
), '% Y-% m-% d') jako „Data” FROMorders
będzie ostatecznym rozwiązaniem: DAby 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
źródło
Możesz użyć
select from_unixtime(1300464000,"%Y-%m-%d %h %i %s") from table;
Aby uzyskać szczegółowy opis na temat
źródło
SELECT from_unixtime( UNIX_TIMESTAMP(fild_with_timestamp) ) from "your_table"
Ta praca dla mnie
źródło