MySQL kullanarak Unix zaman damgasını insan tarafından okunabilir tarihe dönüştürün


223

Unix zaman damgasını insan tarafından okunabilir bir tarihe dönüştürmek için kullanılabilecek bir MySQL işlevi var mı? Unix zamanlarını kaydettiğim bir alanım var ve şimdi insan tarafından okunabilir tarihler için başka bir alan eklemek istiyorum.


1
MySQL kılavuzundaki tarih ve saat fonksiyonları
Pekka

Yanıtlar:



108

Diğer cevaplardan eksik olan (bu yazıdan itibaren) ve doğrudan belirgin olmayan from_unixtime, formatı şu şekilde belirtmek için ikinci bir parametre alabilmesidir:

SELECT
  from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM 
  your_table

20
Çok küçük bir sorun, ancak% h, 12 saatlik biçimde saattir, bu da tamlık için% p gerektirir (AM / PM). Veya% H, 24 saat biçiminde saat verir.
tlum


19

Belirli bir saat diliminde unix zaman damgasına mı ihtiyacınız var?

Eğer mysql cli hızlı erişim varsa bir astar:

mysql> select convert_tz(from_unixtime(1467095851), 'UTC', 'MST') as 'local time';

+---------------------+
| local time          |
+---------------------+
| 2016-06-27 23:37:31 |
+---------------------+

'MST'İstediğiniz saat dilimiyle değiştirin . Arizona'da yaşıyorum UTC UTC'den MST'ye dönüşüm.


7

Neden alan okunabilir olarak kaydediliyor? Sadece bizAS

SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate
               FROM theTable
               WHERE theTable.theField = theValue;

EDIT: Üzgünüz, her şeyi saniyeler değil milisaniye olarak saklarız. Onu düzeltti.


4

DATE_FORMAT işlevini kullanabilirsiniz. İşte örneklerin yer aldığı bir sayfa ve farklı tarih bileşenleri seçmek için kullanabileceğiniz kalıplar.


1

Kolay ve basit bir yol:

select from_unixtime(column_name, '%Y-%m-%d') from table_name


1

Bu sorunun farkında olmadığını bulduğumdan, mysql her zaman UTC'de zaman damgası alanlarına zaman depolar, ancak yerel saat diliminde (örn. Phpmyadmin) gösterecektir. Bulgularımı eklemek istiyorum.

Ben otomatik olarak güncellenen bir last_modified alan var, olarak tanımlanan:

`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Phpmyadmin ile baktığımızda, yerel saatte gibi görünüyor, dahili olarak UTC

SET time_zone = '+04:00'; // or '+00:00' to display dates in UTC or 'UTC' if time zones are installed.
SELECT last_modified, UNIX_TIMESTAMP(last_modified), from_unixtime(UNIX_TIMESTAMP(last_modified), '%Y-%c-%d %H:%i:%s'), CONVERT_TZ(last_modified,@@session.time_zone,'+00:00') as UTC FROM `table_name`

Herhangi bir takımyıldızda, UNIX_TIMESTAMP ve 'UTC olarak' her zaman UTC saatinde görüntülenir.

Bunu, önce time_zone ayarını yapmadan iki kez çalıştırın.

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.