bagaimana cara mengubah string menjadi tanggal di mysql?

149

Saya memiliki stringkolom yang bertindak sebagai a datedan saya ingin memilihnya sebagai date.

Apa itu mungkin?

Format data sampel saya adalah; month/day/year->12/31/2011

Joseph Lafuente
sumber

Jawaban:

258

Seperti yang dikatakan di MySQL Menggunakan kolom string dengan teks tanggal sebagai bidang tanggal , Anda dapat melakukannya

SELECT  STR_TO_DATE(yourdatefield, '%m/%d/%Y')
FROM    yourtable

Anda juga bisa menangani string tanggal ini dalam WHEREklausa. Sebagai contoh

SELECT whatever
  FROM yourtable
 WHERE STR_TO_DATE(yourdatefield, '%m/%d/%Y') > CURDATE() - INTERVAL 7 DAY

Anda dapat menangani semua jenis tata letak tanggal / waktu dengan cara ini. Silakan merujuk ke penentu format untuk DATE_FORMAT()fungsi untuk melihat apa yang dapat Anda masukkan ke dalam parameter kedua STR_TO_DATE().

kaki biru
sumber
6
Saya pikir itu harus INTERVAL 7 HARI bukannya HARI
Feras Odeh
1
Saya memiliki kolom char seperti format "dd-mmm-yyyy". Bagaimana cara saya meminta format "dd-mm-yyyy"?
MAX
51
STR_TO_DATE('12/31/2011', '%m/%d/%Y')
Bala R
sumber
Tanggal berapa disimpan sebagai format DD / MM / YYYY seperti 31/11/1015?
Vipul Hadiya
2
@VipulHadiya ubah string format tanggal menjadi %d/%m/%Yseperti jadi STR_TO_DATE('31/11/1015', '%d/%m/%Y')Ingatlah bahwa output akan YYYY-MM-DDberformat sebagai DATE tipe data.
fyrye
1
jawaban khusus kode hanya bernilai rendah di StackOverflow. Harap perbaiki jawaban yang benar ini.
mickmackusa
10

Berikut dua contoh lainnya.

Untuk menampilkan hari, bulan, dan tahun, Anda dapat menggunakan:

select STR_TO_DATE('14/02/2015', '%d/%m/%Y');

Yang menghasilkan:

2015-02-14

Untuk juga menampilkan waktu, Anda dapat menggunakan:

select STR_TO_DATE('14/02/2017 23:38:12', '%d/%m/%Y %T');

Yang menghasilkan:

2017-02-14 23:38:12

aalhanane
sumber