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

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().


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')

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.