MySQL mengonversi string tanggal ke stempel waktu Unix

138

Bagaimana cara mengubah format berikut menjadi unix timestamp?

Apr 15 2012 12:00AM

Format yang saya dapatkan dari DB tampaknya ada AMdi bagian akhir. Saya sudah mencoba menggunakan yang berikut ini tetapi tidak berhasil:

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

where Sales.SalesDate value is Apr 15 2012 12:00AM
redcoder
sumber
1
Apakah tanggal disimpan sebagai teks di DB?
strnk
1
Apakah ini benar-benar pertanyaan MySQL? Anda sintaks tidak menyarankan begitu.
Álvaro González
1
Sepertinya apa pertanyaannya tentang MSSQL.
Fedir RYKHTIK

Jawaban:

227

Berikut adalah contoh cara mengonversi DATETIMEke stempel waktu UNIX :
SELECT UNIX_TIMESTAMP(STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p'))

Berikut adalah contoh cara mengubah format tanggal :
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')

Dokumentasi: UNIX_TIMESTAMP ,FROM_UNIXTIME

Query Master
sumber
1
Terima kasih. Ini berfungsi.Ini juga dapat digunakan dalam pernyataan lain seperti memperbarui, menghapus, menyisipkan, dll.
MR_AMDEV
1
Setelah begitu banyak percobaan, solusi Anda berhasil untuk saya: 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 ASCIni adalah tanggal yang saya miliki 31 Oct 2017 4:16:49 pmsehingga saya perlu menggunakannya %d %M %Y %h:%i:%s %puntukSTR_TO_DATE
Damodar Bashyal
36

Anda pasti harus menggunakan keduanya STR_TO_DATEuntuk mengonversi tanggal Anda ke format tanggal standar MySQL, dan UNIX_TIMESTAMPuntuk mendapatkan stempel waktu darinya.

Mengingat format tanggal Anda, kira-kira seperti

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

Akan memberi Anda stempel waktu yang valid. LihatSTR_TO_DATE dokumentasi untuk mendapatkan informasi lebih lanjut tentang format string.

strnk
sumber
11

Untuk tanggal saat ini, cukup gunakan UNIX_TIMESTAMP()dalam kueri MySQL Anda.

stackMonk
sumber
2
Tidak menjawab pertanyaan dari postingan asli.
Evan Donovan
ini untuk orang-orang yang perlu mengonversi hanya tanggal sekarang dalam kueri mereka, menjawab sebagian dari pertanyaan, tidak perlu penjaga gerbang Anda Evan, orang-orang telah memberikan suara positif yang sama untuk menunjukkan bahwa mereka membutuhkan ini
stackMonk
Pertanyaan asli diminta untuk mengubah format tertentu; ini tidak menjawab pertanyaan itu. Saya akan membatalkan suara negatif jika Anda mengedit untuk memperjelasnya.
Evan Donovan
telah diklarifikasi pada baris pertama bahwa ini untuk tanggal sekarang.
stackMonk
Saya mengedit untuk memperjelas hubungan tanggapan ini dengan pertanyaan asli dan memberikan contoh.
Evan Donovan
-5

Dari 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
Brian Smith
sumber
1
Jawaban ini untuk MSSQL (meskipun pertanyaan ini membingungkan).
Salman A