Bagaimana cara mengubah timestamp ke datetime di MySQL?


133

Bagaimana cara mengonversi 1300464000ke 2011-03-18 16:00:00dalam MySQL?


2
Silakan cari pertanyaan / jawaban yang ada sebelum Anda memposting pertanyaan baru - topik ini telah dibahas secara rinci.
John Parker

2
Sudahkah Anda melihat dokumentasi? Semuanya ada di sana: dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Felix Kling

Jawaban:


200

Gunakan FROM_UNIXTIME()fungsi di MySQL

Ingat bahwa jika Anda menggunakan kerangka kerja yang menyimpannya dalam milidetik (misalnya cap waktu Java) Anda harus membaginya dengan 1000 untuk mendapatkan waktu Unix yang tepat dalam hitungan detik.


1
SELECT from_unixtime( TIMESTAMP( "2011-12-01", "22:01:23.048" ) )tidak bekerja Mengapa? menggunakan v5.6
Janus Troelsen

3
@JanusTroelsen SELECT from_unixtime( unix_timestamp(TIMESTAMP( "2011-12-01", "22:01:23.048" ) ) )bekerja. TIMESTAMP()tidak mengembalikan nilai integer.
cnvzmxcvmcx

4
Hanya karena saya sudah melakukan ini dan bingung pada output: MySQL menyimpan waktu Unix dalam hitungan detik, sedangkan banyak kerangka kerja lain menyimpannya dalam milidetik (mis. Stempel waktu Java). Jadi ingatlah untuk membagi dengan 1000 jika Anda menggunakan fungsi ini pada data yang berasal dari suatu tempat yang menggunakan millis untuk waktu Unix.
Chris Thompson

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

Ini adalah solusi akhir jika tanggal yang diberikan dalam format seperti 1300464000


3
Terima kasih untuk ini. Untuk memasukkan waktu: DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%d-%m-%Y %H:%i:%s') as "Date" FROM `orders`
Pengembang Web JNP

Saya cukup yakin DATE_FORMAT (FROM_UNIXTIME ( orderdate), '% Y-% m-% d') sebagai "Tanggal" FROM ordersakan menjadi solusi akhir: D
Kyle

14

Untuk menjawab komentar Janus Troelsen

Gunakan UNIX_TIMESTAMP sebagai ganti TIMESTAMP

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

Fungsi TIMESTAMP mengembalikan Tanggal atau DateTime dan bukan cap waktu, sedangkan UNIX_TIMESTAMP mengembalikan cap waktu unix


Tampaknya jelas untuk membandingkan waktu unix dari waktu unix. Saya menggunakan SELECT (CAST (DATE_FORMAT (from_unixtime (UNIX_TIMESTAMP (CURRENT_TIMESTAMP)), '% Y-% m-% d') sebagai DATE) <CAST ('2019-05-02' AS DATE)); untuk membandingkan tanggal, saya mengganti 2019-05 * 02 objek datetime yang diformat di php. Terima kasih.
Mantisse

1
Tolong jangan jawab cara ini untuk pertanyaan yang berbeda dari yang asli.
Paweł Stankowski

Ini tidak menjawab pertanyaan asli dengan cara apa pun
Nico Haase


3

SELECT from_unixtime( UNIX_TIMESTAMP(fild_with_timestamp) ) from "your_table"
Ini bekerja untuk saya

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.