jak przekonwertować ciąg do daty w mysql?

149

Mam stringkolumnę, która działa jak a datei chcę ją wybrać jako date.

Czy to możliwe?

Mój przykładowy format danych wyglądałby tak; month/day/year->12/31/2011

Joseph Lafuente
źródło

Odpowiedzi:

258

Jak powiedziano w MySQL Używając kolumny łańcuchowej z tekstem daty jako polem daty , możesz to zrobić

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

Możesz również obsłużyć te ciągi dat w WHEREklauzulach. Na przykład

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

W ten sposób możesz obsłużyć wszystkie rodzaje układów daty / czasu. Zapoznaj się ze specyfikatorami formatu DATE_FORMAT()funkcji, aby zobaczyć, co można umieścić w drugim parametrze STR_TO_DATE().

bluefoot
źródło
6
Myślę, że powinien to być INTERWAŁ 7 DZIEŃ zamiast DNI
Feras Odeh
1
Mam kolumnę typu char w formacie „dd-mmm-rrrr”. Jak wyszukiwać w formacie „dd-mm-rrrr”?
MAX
51
STR_TO_DATE('12/31/2011', '%m/%d/%Y')
Bala R
źródło
Jaka data jest przechowywana w formacie DD / MM / RRRR, np. 31/11/1015?
Vipul Hadiya
2
@VipulHadiya zmień ciąg formatu daty na %d/%m/%Ypodobny, więc STR_TO_DATE('31/11/1015', '%d/%m/%Y')pamiętaj, że dane wyjściowe będą w YYYY-MM-DDformacie jako DATE typ danych.
fyrye
1
odpowiedzi zawierające tylko kod mają niską wartość w StackOverflow. Popraw tę poprawną odpowiedź.
mickmackusa
10

Oto kolejne dwa przykłady.

Aby wyświetlić dzień, miesiąc i rok, możesz użyć:

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

Który produkuje:

2015-02-14

Aby również wyświetlić czas, możesz użyć:

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

Który produkuje:

2017-02-14 23:38:12

alhanan
źródło