MySQL'de zaman damgasını tarih saatine nasıl dönüştürebilirim?


133

Nasıl dönüştürmek 1300464000için 2011-03-18 16:00:00MySQL?


2
Lütfen yeni bir soru göndermeden önce mevcut soruları / cevapları arayın - bu konu zaten bazı ayrıntılarla ele alınmıştır.
John Parker

2
Belgelere daha önce baktınız mı? Hepsi orada: dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Felix Kling

Yanıtlar:


200

FROM_UNIXTIME()İşlevi MySQL'de kullanın

Milisaniye cinsinden depolayan bir çerçeve kullanıyorsanız (örneğin Java'nın zaman damgası) doğru Unix zamanını saniye cinsinden elde etmek için 1000'e bölmeniz gerektiğini unutmayın.


1
SELECT from_unixtime( TIMESTAMP( "2011-12-01", "22:01:23.048" ) )çalışmıyor. neden? v5.6 kullanma
Janus Troelsen

3
@ JanusTroelsen SELECT from_unixtime( unix_timestamp(TIMESTAMP( "2011-12-01", "22:01:23.048" ) ) )çalışıyor. TIMESTAMP()bir tamsayı değeri döndürmez.
cnvzmxcvmcx

4
Sırf bunu yaptığım ve çıktıda kafam karıştığı için: MySQL Unix zamanını saniyeler içinde depolar, halbuki diğer pek çok çerçeve milisaniye cinsinden depolar (yani Java'nın zaman damgası). Bu işlevi Unix zamanı için milis kullanan bir yerden gelen verilerde kullanıyorsanız 1000'e bölmeyi unutmayın.
Chris Thompson

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

Verilen tarih gibi kodlanmış formatta ise bu nihai çözümdür. 1300464000


3
Bunun için teşekkürler. Saati eklemek için: DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%d-%m-%Y %H:%i:%s') as "Date" FROM `orders`
JNP Web Developer

BUNDAN orderdate"Tarih" olarak DATE_FORMAT (FROM_UNIXTIME ( ), '% Y-% m-% d') ordersnihai çözüm olacağından oldukça eminim : D
Kyle

14

Janus Troelsen yorumuna cevap vermek için

Kullanım UNIX_TIMESTAMP yerine TIMESTAMP

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

TIMESTAMP işlevi zaman damgası değil, Tarih veya Tarih Saat döndürürken, UNIX_TIMESTAMP bir unix zaman damgası döndürür


Unix zamanını bir unix zamanından karşılaştırmak için açık görünüyor. SELECT (CAST (DATE_FORMAT (from_unixtime (UNIX_TIMESTAMP (CURRENT_TIMESTAMP)), '% Y-% m-% d') DATE olarak) <CAST ('2019-05-02' AS DATE)); tarihleri ​​karşılaştırmak için php'de biçimlendirilmiş bir tarih saat nesnesini 2019-05 * 02 değiştiriyorum. Thnaks.
Mantisse

1
Lütfen orijinal sorudan farklı bir soruya bu şekilde cevap vermeyin.
Paweł Stankowski

Bu, orijinal soruyu hiçbir şekilde yanıtlamaz
Nico Haase


3

SELECT from_unixtime( UNIX_TIMESTAMP(fild_with_timestamp) ) from "your_table"
Bu benim için çalışıyor

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.