MySQL แปลงสตริงวันที่เป็น Unix timestamp


138

ฉันจะแปลงรูปแบบต่อไปนี้เป็น unix timestamp ได้อย่างไร

Apr 15 2012 12:00AM

รูปแบบที่ฉันได้รับจาก DB ดูเหมือนจะมีAMในตอนท้าย ฉันได้ลองใช้สิ่งต่อไปนี้ แต่ไม่ได้ผล:

CONVERT(DATETIME, Sales.SalesDate, 103) AS DTSALESDATE,  
CONVERT(TIMESTAMP, Sales.SalesDate, 103) AS TSSALESDATE

where Sales.SalesDate value is Apr 15 2012 12:00AM

1
วันที่จัดเก็บเป็นข้อความในฐานข้อมูลหรือไม่
strnk

1
เป็นคำถาม MySQL จริงหรือ? ไวยากรณ์ของคุณไม่แนะนำเช่นนั้น
ÁlvaroGonzález

1
ดูเหมือนว่าคำถามเกี่ยวกับ MSSQL คืออะไร
Fedir RYKHTIK

คำตอบ:


227

นี่คือตัวอย่างวิธีการแปลงDATETIMEเป็น UNIX timestamp :
SELECT UNIX_TIMESTAMP(STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p'))

นี่คือตัวอย่างวิธีการเปลี่ยนรูปแบบวันที่ :
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p')),'%m-%d-%Y %h:%i:%p')

เอกสารประกอบ: UNIX_TIMESTAMP ,FROM_UNIXTIME


1
ขอบคุณมันใช้งานได้สิ่งนี้ยังสามารถใช้ในคำสั่งอื่น ๆ เช่นอัปเดตลบแทรก ฯลฯ
MR_AMDEV

1
หลังจากการทดลองหลายครั้งวิธีแก้ปัญหาของคุณได้ผลสำหรับฉัน: select * from (SELECT order_increment_id, FROM_UNIXTIME(UNIX_TIMESTAMP(STR_TO_DATE(order_date, '%d %M %Y %h:%i:%s %p')),'%Y-%m-%d') as order_date, email_sent FROM `packingslip_header` where email_sent=0) t where order_date >= '2019-11-13' ORDER BY order_increment_id ASCนี่คือวันที่ที่ฉันมี31 Oct 2017 4:16:49 pmดังนั้นฉันจึงจำเป็นต้องใช้%d %M %Y %h:%i:%s %pสำหรับSTR_TO_DATE
Damodar Bashyal

36

คุณจะต้องใช้ทั้งสองอย่างSTR_TO_DATEเพื่อแปลงวันที่ของคุณเป็นรูปแบบวันที่มาตรฐานของ MySQL และ UNIX_TIMESTAMPรับการประทับเวลาจากมัน

ระบุรูปแบบวันที่ของคุณเช่น

UNIX_TIMESTAMP(STR_TO_DATE(Sales.SalesDate, '%M %e %Y %h:%i%p'))

จะช่วยให้คุณมีการประทับเวลาที่ถูกต้อง ดูSTR_TO_DATEเอกสารประกอบเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับสตริงรูปแบบ


11

สำหรับวันที่ปัจจุบันเพียงใช้UNIX_TIMESTAMP()ในแบบสอบถาม MySQL ของคุณ


2
ไม่ตอบคำถามจากโพสต์ต้นฉบับ
Evan Donovan

สำหรับผู้ที่ต้องการแปลงเฉพาะวันที่ปัจจุบันในข้อความค้นหาของพวกเขาตอบคำถามส่วนหนึ่งโดยไม่จำเป็นต้องให้ Evan เฝ้าประตูของคุณผู้คนได้โหวตให้เหมือนกันเพื่อแสดงว่าพวกเขาต้องการสิ่งนี้
stackMonk

คำถามเดิมขอให้แปลงรูปแบบเฉพาะ นี่ไม่ได้ตอบคำถามนั้น ฉันจะยกเลิกการลงคะแนนหากคุณแก้ไขเพื่อชี้แจงสิ่งนั้น
Evan Donovan

มีการชี้แจงในบรรทัดแรกว่าเป็นวันที่ปัจจุบัน
stackMonk

ฉันแก้ไขเพื่อชี้แจงความสัมพันธ์ของคำตอบนี้กับคำถามเดิมและยกตัวอย่าง
Evan Donovan

-5

จากhttp://www.epochconverter.com/

SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())

My bad, SELECT unix_timestamp(time) Time format: YYYY-MM-DD HH:MM:SS or YYMMDD or YYYYMMDD. More on using timestamps with MySQL:

http://www.epochconverter.com/programming/mysql-from-unixtime.php

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