แปลงเวลา Unix เป็นวันที่มนุษย์สามารถอ่านได้โดยใช้ MySQL


222

มีฟังก์ชั่น MySQL ที่สามารถใช้ในการแปลงเวลา Unix เป็นวันที่มนุษย์อ่านหรือไม่? ฉันมีฟิลด์หนึ่งที่ฉันบันทึกเวลายูนิกซ์และตอนนี้ฉันต้องการเพิ่มฟิลด์อื่นสำหรับวันที่มนุษย์อ่านได้



คำตอบ:


393

การใช้FROM_UNIXTIME():

SELECT
  FROM_UNIXTIME(timestamp) 
FROM 
  your_table;

ดูเพิ่มเติม: เอกสาร MySQL FROM_UNIXTIME()บน


3
นี่คือเอกสารอย่างเป็นทางการสำหรับfrom_unixtime: dev.mysql.com/doc/refman/5.1/en/…
DACrosby

น่าเศร้าที่ไม่มีแต่แทนที่จะTO_UNIXTIME UNIX_TIMESTAMP
Olle Härstedt

108

สิ่งที่หายไปจากคำตอบอื่น ๆ (ตามที่เขียนนี้) และไม่ชัดเจนโดยตรงคือfrom_unixtimeสามารถใช้พารามิเตอร์ที่สองเพื่อระบุรูปแบบดังนี้:

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

20
ปัญหาเล็กน้อยมาก แต่% h คือชั่วโมงในรูปแบบ 12 ชั่วโมงซึ่งต้องการ% p เพื่อความสมบูรณ์ (AM / PM) หรือ% H ให้ชั่วโมงในรูปแบบ 24 ชั่วโมง
tlum


19

ต้องการเวลาประทับ unix ในเขตเวลาที่เฉพาะเจาะจงหรือไม่?

นี่คือหนึ่งซับถ้าคุณเข้าถึงด่วน mysql cli:

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

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

แทนที่'MST'ด้วยเขตเวลาที่คุณต้องการ ฉันอาศัยอยู่ในรัฐแอริโซนาดังนั้นการแปลงจาก UTC เป็น MST


7

ทำไมต้องบันทึกฟิลด์เป็นที่อ่านได้? แค่พวกเราAS

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

แก้ไข: ขออภัยเราจัดเก็บทุกอย่างในไม่กี่วินาทีไม่กี่วินาที ซ่อมมัน.


4

คุณสามารถใช้ฟังก์ชัน DATE_FORMAT นี่คือหน้าที่มีตัวอย่างและรูปแบบที่คุณสามารถใช้เพื่อเลือกส่วนประกอบวันที่ที่แตกต่างกัน



1

เนื่องจากฉันพบคำถามนี้ที่ไม่ทราบว่า mysql มักจะเก็บเวลาในเขตเวลาประทับใน UTC แต่จะแสดง (เช่น phpmyadmin) ในเขตเวลาท้องถิ่นฉันต้องการเพิ่มการค้นพบของฉัน

ฉันมีฟิลด์ last_modified ที่อัพเดตโดยอัตโนมัติซึ่งกำหนดเป็น:

`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

ดูด้วย phpmyadmin ดูเหมือนว่าจะเป็นเวลาท้องถิ่นภายในเป็น 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`

ในกลุ่มดาวใด ๆ UNIX_TIMESTAMP และ 'as UTC' จะปรากฏในเวลา UTC เสมอ

รันสองครั้งก่อนโดยไม่ต้องตั้งค่า time_zone

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.