d.stp
23.01.2015, 13:42:36
Od początku na swojej stronie mam tabelę z rekordami gdzie jest pole "data_dodania" i nie wiem czemu (może temu że to było dawno temu) zrobiłem to pole jako VARCHAR a datę wrzucałem przez date() w php. Problem pojawił się teraz jak chcę zrobić sortowanie wyników z tej tabeli wg. daty dodania. Nie wiem co będzie lepsze czy kombinować z tym i dalej trzymać się varchar czy jakimś magicznym sposobem przekonwertować tabele na DATETIME.
W tym polu data wrzucana przez date() w php wygląda tak: 10-10-2014, 19:14:56 i nie wiem jak zrobić sortowanie
Kishin
23.01.2015, 14:01:38
Rozumiem ze nie masz w tej tabeli żadnego pola id z auto incrementem? Bo jeżeli tak to równie dobrze możesz sortować po tym polu.
Jeżeli nie no to cóż, wg mnie dobrze mieć tabele w jakimś normalnym formacie żeby na przyszłość nie kombinować już.
Więc wyciągnij sobie po prostu wszystkie wartości data_dodania w php i pozamieniaj je na format date_time : $mysqldate = date( 'Y-m-d H:i:s', $phpdate );
Gdy już będziesz miał poprawioną tabele, zamien typ danych na datetime i tyle
d.stp
23.01.2015, 14:05:35
Mam pole z AI, ale tutaj chodzi o to żeby właśnie sortować po dacie dodania, nie po innym polu

Nie ma jakiejś super funkcji co mi przekonwertuje date?
Crozin
23.01.2015, 14:55:59
1. Wykonaj kopię bazy danych.
2. Dodaj nową kolumnę typu DATE do tabeli.
3. Wykonaj zapytanie UPDATE, które przekopiuje wartość z kolumny VARCHAR do kolumny DATE, jednak pamiętaj o tym, by ten przecinek w formacie usunąć - funkcja REPLACE.
4. Sprawdź czy dane zostały poprawnie przeniesione.
5. Usuń pierwotną kolumnę VARCHAR.
6. Zmień nazwę kolumny DATE na taką jak miała pierwotna.
Dodatkowo:
1. Nie pamiętam już czy w MySQL nie dałoby się tego zrobić przez ALTER TABLE + funkcję konwertującą, ale to bez znaczenia - jest to jednorazowa operacja.
2. Zapewne dane z bazy wyświetlasz na stronie "jak lecą". Teraz będziesz musiał je odpowiednio sformatować do postaci YYYY-MM-DD, HH:MM:SS.