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

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


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.


11

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


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

1
Jawaban ini untuk MSSQL (meskipun pertanyaan ini membingungkan).
Salman A
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.