มีฟังก์ชั่น MySQL ที่สามารถใช้ในการแปลงเวลา Unix เป็นวันที่มนุษย์อ่านหรือไม่? ฉันมีฟิลด์หนึ่งที่ฉันบันทึกเวลายูนิกซ์และตอนนี้ฉันต้องการเพิ่มฟิลด์อื่นสำหรับวันที่มนุษย์อ่านได้
มีฟังก์ชั่น MySQL ที่สามารถใช้ในการแปลงเวลา Unix เป็นวันที่มนุษย์อ่านหรือไม่? ฉันมีฟิลด์หนึ่งที่ฉันบันทึกเวลายูนิกซ์และตอนนี้ฉันต้องการเพิ่มฟิลด์อื่นสำหรับวันที่มนุษย์อ่านได้
คำตอบ:
การใช้FROM_UNIXTIME()
:
SELECT
FROM_UNIXTIME(timestamp)
FROM
your_table;
ดูเพิ่มเติม: เอกสาร MySQL FROM_UNIXTIME()
บน
from_unixtime
: dev.mysql.com/doc/refman/5.1/en/…
TO_UNIXTIME
UNIX_TIMESTAMP
สิ่งที่หายไปจากคำตอบอื่น ๆ (ตามที่เขียนนี้) และไม่ชัดเจนโดยตรงคือfrom_unixtime
สามารถใช้พารามิเตอร์ที่สองเพื่อระบุรูปแบบดังนี้:
SELECT
from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM
your_table
ฉันคิดว่าสิ่งที่คุณกำลังมองหาคือ FROM_UNIXTIME()
นี่คือหนึ่งซับถ้าคุณเข้าถึงด่วน 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
ทำไมต้องบันทึกฟิลด์เป็นที่อ่านได้? แค่พวกเราAS
SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate
FROM theTable
WHERE theTable.theField = theValue;
แก้ไข: ขออภัยเราจัดเก็บทุกอย่างในไม่กี่วินาทีไม่กี่วินาที ซ่อมมัน.
คุณสามารถใช้ฟังก์ชัน DATE_FORMAT นี่คือหน้าที่มีตัวอย่างและรูปแบบที่คุณสามารถใช้เพื่อเลือกส่วนประกอบวันที่ที่แตกต่างกัน
วิธีที่ง่ายและเรียบง่าย:
select from_unixtime(column_name, '%Y-%m-%d') from table_name
เนื่องจากฉันพบคำถามนี้ที่ไม่ทราบว่า 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