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.