Ubah cap waktu Unix menjadi tanggal yang dapat dibaca manusia menggunakan MySQL


222

Apakah ada fungsi MySQL yang dapat digunakan untuk mengubah cap waktu Unix menjadi tanggal yang dapat dibaca manusia? Saya memiliki satu bidang tempat saya menyimpan waktu Unix dan sekarang saya ingin menambahkan bidang lain untuk tanggal yang dapat dibaca manusia.


1
Fungsi tanggal dan waktu dalam manual mySQL
Pekka

Jawaban:



108

Apa yang hilang dari jawaban lain (pada tulisan ini) dan tidak langsung jelas adalah bahwa from_unixtimedapat mengambil parameter kedua untuk menentukan format seperti:

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

20
Masalah yang sangat kecil, tetapi% h adalah jam dalam format 12 jam, yang kemudian membutuhkan% p untuk kelengkapan (AM / PM). Atau% H memberikan jam dalam format 24 jam.
tlum


19

Perlu cap waktu unix di zona waktu tertentu?

Berikut ini satu liner jika Anda memiliki akses cepat ke klien mysql:

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

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

Ganti 'MST'dengan zona waktu yang Anda inginkan. Saya tinggal di Arizona 🌵 dengan demikian konversi dari UTC ke MST.


7

Mengapa repot-repot menyimpan bidang sebagai dapat dibaca? Hanya kitaAS

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

EDIT: Maaf, kami menyimpan semuanya dalam milidetik bukan dalam hitungan detik. Memperbaikinya.


4

Anda dapat menggunakan fungsi DATE_FORMAT. Inilah halaman dengan contoh, dan pola yang dapat Anda gunakan untuk memilih komponen tanggal yang berbeda.


1

Cara mudah dan sederhana:

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


1

Karena saya menemukan pertanyaan ini tidak disadari, bahwa mysql selalu menyimpan waktu di bidang timestamp di UTC tetapi akan ditampilkan (mis. Phpmyadmin) di zona waktu lokal saya ingin menambahkan temuan saya.

Saya memiliki bidang last_modified yang diperbarui secara otomatis, didefinisikan sebagai:

`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Melihatnya dengan phpmyadmin, sepertinya itu adalah waktu setempat, secara internal itu adalah 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`

Di sembarang konstelasi, UNIX_TIMESTAMP dan 'sebagai UTC' selalu ditampilkan dalam waktu UTC.

Jalankan ini dua kali, pertama tanpa mengatur time_zone.

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.