Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Mysql][Php]Sortowanie daty
Jarek099
post 13.07.2010, 08:52:25
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 14.01.2010
Skąd: Słupsk

Ostrzeżenie: (0%)
-----


$sql="SELECT * FROM `xxx` WHERE cos = '".$cos."' ORDER BY `data` DESC";
u mnie w bazie danych data zapisuje się tak : 31.12.2010 .
I źle mi sortuje po dacie, napisałem kod który zmienia z 31.12.2010 na 2010.12.31. Ale to nic nie daje bo sortowanie jest przez SELECT, da się jakoś zrobić by zmienić sortowanie w kodzie '' $sql '' questionmark.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
wookieb
post 13.07.2010, 09:01:05
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




.... Ponieważ pole to musi być typu datetime albo timestamp (co wolisz)


--------------------
Go to the top of the page
+Quote Post
Jarek099
post 13.07.2010, 09:04:19
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 14.01.2010
Skąd: Słupsk

Ostrzeżenie: (0%)
-----


Tak tylko to ja wiem ^^
Ale jak mam około 700tyś wpisów do posegregowania i muszę zrobić by szło od 2010 w dół ...
A edycja każdego z nich jest bezsensowna ^^
Go to the top of the page
+Quote Post
wookieb
post 13.07.2010, 09:16:13
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




No to zrób konwersję zapytaniem. Np spróbuj utworzyć dodatkową kolumnę do której wrzucisz dane w formacie rok-miesiąc-dzień 00:00:00
  1. UPDATE tabela SET nowa_data = REPLACE(stara_data, '.', '-') || ' 00:00:00'

Pisane z palca więc musisz pokombinować


--------------------
Go to the top of the page
+Quote Post
Jarek099
post 13.07.2010, 09:27:02
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 14.01.2010
Skąd: Słupsk

Ostrzeżenie: (0%)
-----


No to zrobiłem tak :
UPDATE baza SET newkolumn = REPLACE(data, '.')
i w nowej kolumnie do każdego przypisało mi '' 0000-00-00 00:00:00 ''
Więc chyba lipa
Go to the top of the page
+Quote Post
wookieb
post 13.07.2010, 09:31:03
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(Jarek099 @ 13.07.2010, 10:27:02 ) *
UPDATE baza SET newkolumn = REPLACE(data, '.')

To chyba nie jest to co podałem. Poza tym daj strukture tabeli i parę przykładowych rekordów.


--------------------
Go to the top of the page
+Quote Post
Jarek099
post 13.07.2010, 09:36:42
Post #7





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 14.01.2010
Skąd: Słupsk

Ostrzeżenie: (0%)
-----


Pisałem z ręki to pominęło mi się wstydnis.gif

to to jest struktura bez nowej kolumny :
id | imie | nazwisko | urodzony | zmarl
int(4) | varchar(40) | varchar(40) | varchar(12) | varchar(12)

i przykłady :

1 | Ignacy | Nowak | 31.01.1914 | 11.06.1996
2 | Karolina | Kowalksa | 10.11.1910 | 23.05.1986
3 | Krystyna | Palikot | 10.01.1932 | 23.04.1985

Go to the top of the page
+Quote Post
wookieb
post 13.07.2010, 10:00:41
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. UPDATE tabela SET nowa_data = CONCAT(substr(stara_data, 7), '-', substr(stara_data, 4, 2), '-', substr(stara_data, 1, 2), ' 00:00:00')

Typ pola nowej tabeli to datetime


--------------------
Go to the top of the page
+Quote Post
Jarek099
post 13.07.2010, 10:12:49
Post #9





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 14.01.2010
Skąd: Słupsk

Ostrzeżenie: (0%)
-----


Noo fajnie zadziałało tongue.gif
Dzięki wielkie winksmiley.jpg
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 12:16