จะแปลง timestamp เป็น datetime ใน MySQL ได้อย่างไร


133

วิธีการแปลง1300464000เป็น2011-03-18 16:00:00ใน MySQL?


2
โปรดค้นหาคำถาม / คำตอบที่มีอยู่ก่อนที่คุณจะโพสต์คำถามใหม่ - หัวข้อนี้ได้กล่าวถึงรายละเอียดแล้ว
John Parker

2
คุณได้ดูเอกสารแล้วหรือยัง? ทุกอย่างอยู่ที่นั่น: dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Felix Kling

คำตอบ:


200

ใช้FROM_UNIXTIME()ฟังก์ชันใน MySQL

โปรดจำไว้ว่าหากคุณใช้เฟรมเวิร์กที่จัดเก็บเป็นมิลลิวินาที (เช่นการประทับเวลาของ Java) คุณต้องหารด้วย 1,000เพื่อให้ได้เวลา Unix ที่ถูกต้องเป็นวินาที


1
SELECT from_unixtime( TIMESTAMP( "2011-12-01", "22:01:23.048" ) )ไม่ทำงาน ทำไม? ใช้ v5.6
Janus Troelsen

3
@JanusTroelsen ได้SELECT from_unixtime( unix_timestamp(TIMESTAMP( "2011-12-01", "22:01:23.048" ) ) )ผล TIMESTAMP()ไม่ส่งคืนค่าจำนวนเต็ม
cnvzmxcvmcx

4
เพียงเพราะฉันได้ทำสิ่งนี้แล้วและสับสนกับผลลัพธ์: MySQL เก็บเวลา Unix เป็นวินาทีในขณะที่เฟรมเวิร์กอื่น ๆ จำนวนมากเก็บไว้ในหน่วยมิลลิวินาที (เช่นการประทับเวลาของ Java) ดังนั้นอย่าลืมหารด้วย 1,000 หากคุณใช้ฟังก์ชันนี้กับข้อมูลที่มาจากที่ใดที่หนึ่งซึ่งใช้เวลา Unix เป็นมิลลิวินาที
Chris Thompson

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

นี่เป็นทางออกที่ดีที่สุดหากวันที่ที่ระบุอยู่ในรูปแบบที่เข้ารหัสเช่น 1300464000


3
ขอบคุณสำหรับสิ่งนี้. รวมเวลา: DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%d-%m-%Y %H:%i:%s') as "Date" FROM `orders`
JNP Web Developer

ฉันค่อนข้างมั่นใจว่า DATE_FORMAT (FROM_UNIXTIME ( orderdate), '% Y-% m-% d') เป็น "วันที่" FROM ordersจะเป็นทางออกที่ดีที่สุด: D
Kyle

14

เพื่อตอบความคิดเห็นของ Janus Troelsen

ใช้UNIX_TIMESTAMPแทนTIMESTAMP

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

ฟังก์ชัน TIMESTAMP จะส่งคืนวันที่หรือวันที่และเวลาและไม่ใช่การประทับเวลาในขณะที่ UNIX_TIMESTAMP ส่งคืนการประทับเวลาแบบยูนิกซ์


ดูเหมือนจะชัดเจนในการเปรียบเทียบเวลายูนิกซ์จากเวลายูนิกซ์ ฉันใช้ SELECT (CAST (DATE_FORMAT (from_unixtime (UNIX_TIMESTAMP (CURRENT_TIMESTAMP))), '% Y-% m-% d') เป็น DATE) <CAST ('2019-05-02' AS DATE)); เพื่อเปรียบเทียบวันที่ฉันแทนที่ 2019-05 * 02 อ็อบเจ็กต์ datetime ที่จัดรูปแบบใน php Thnaks
Mantisse

1
โปรดอย่าตอบด้วยวิธีนี้สำหรับคำถามที่แตกต่างจากคำถามเดิม
Paweł Stankowski

นี่ไม่ได้ตอบคำถามเดิม แต่อย่างใด
Nico Haase


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