czy istnieje funkcja mySQL do konwertowania daty z formatu dd.mm.rr na RRRR-MM-DD?Konwersja formatu daty SQL? [dd.mm.rr do YYYY-MM-DD]
na przykład, 03.09.13 -> 2013-09-03
.
czy istnieje funkcja mySQL do konwertowania daty z formatu dd.mm.rr na RRRR-MM-DD?Konwersja formatu daty SQL? [dd.mm.rr do YYYY-MM-DD]
na przykład, 03.09.13 -> 2013-09-03
.
Od swoim wejściu jest ciąg w postaci 03.09.13
, będę zakładać (od dzisiaj jest 03 września 2013), które to dd-mm-rr. można przekonwertować go na bieżąco za pomocą STR_TO_DATE
:
STR_TO_DATE(myVal, '%d.%m.%y')
Następnie można sformatować go z powrotem do łańcucha za pomocą DATE_FORMAT
:
DATE_FORMAT(STR_TO_DATE(myVal, '%d.%m.%y'), '%Y-%m-%d')
pamiętać, że rok jest %y
(małe litery „y”) w STR_TO_DATE
i %Y
(wielkie litery "Y") w DATE_FORMAT
. Wersja mała jest dla dwucyfrowych lat, a wielka dla czterocyfrowych lat.
DATE_FORMAT (STR_TO_DATE (myVal,'% d.% M.% Y '),'% Y-% m-% d ') Y jest wielka litera –
Rajavel - jest to małe "y" w pierwszym, ponieważ ciąg wejściowy ma 2-cyfrowy rok ('03.09.13'). W drugim jest wielka, więc wynik będzie 4-cyfrowy rok ('2013-09-03'). –
Dzięki za wyjaśnienie mi .. –
Zastosowanie
SELECT CONCAT(
'20',
SUBSTR('03.09.13', 7, 2),
'-',
SUBSTR('03.09.13', 4, 2),
'-',
SUBSTR('03.09.13', 1, 2))
Fiddle demo.
Więcej informacji na temat formatów, które można przeczytać w odpowiednim numerze manual page. Wskazówka: jeśli chodzi o wartość konwersji z pola innego niż datetime - zamiast tego lepiej użyć typu danych DATE/DATETIME. Jest to jednak zły pomysł , który działa z datami za pośrednictwem funkcji łańcuchowych. Powyżej znajduje się niezła sztuczka z STR_TO_DATE
(nie powtórzy tego kodu, zaktualizowany, aby lepiej pasował)
Nie działa, 'DATE_FORMAT' wymaga, aby data wejścia była w formacie Y-m-d. Twoje zapytanie (jeśli uruchomisz) zwróci "2003-09-13", oczywiście niepoprawne – Lee
Tak, zanotowane (po wysłaniu, niestety) - zaktualizowane. –
Odwróciłem mój głos na przegłosowanie, tylko dlatego, że nie myślałem o tym w ten sposób. Nie jest to coś, co osobiście polecałbym (tak jakbym nie chciał), ale biorąc pod uwagę jego wyjątkowe wymagania, wydaje się, że jest to jedyny sposób na zrobienie tego. – Lee
Daty są zapisywane w wewnętrznym formacie. Możesz użyć funkcji date_format()
, aby przekonwertować ją na ciąg znaków przy użyciu różnych formatów. Dla waszego w szczególności:
select date_format(`date`, '%Y-%m-%d')
Czy Twój wpis jest typem daty, czy jest to ciąg, który jest dosłownie '03.09.13'? –
@ ppeterka66 Tak, a pytanie tutaj prawdopodobnie oznacza, że nie znalazłem/zrozumiałem na to odpowiedzi. – user2216190
@EdGibbs to ciąg znaków. – user2216190