ďťż

[PHP-MySql] Segregowanie wyników z MySqla jak posegregować według daty

       

Podstrony


telcocafe

Cześć.
W sumie nie mam więcej nic do dodania niż to co jest w opisie.
Chodzi o wyświetlenie rekordów według znajdującej się,
wewnątrz bazy pola Data przechowywującego Datę dodania rekordu
w formacie DD-MM-RRRR .
Czy któs już coś takiego robił albo wie jak takie rozwiązanie wprowadzić ?
Bardzo by mi to ułatwiło życie.
Pozdrawiam.

Jeszcze dodam że wydaje mi się że można to zrobić jakimś zapytaniem
języka SQL może np "ORDER BY" uporządkuj za pomocą
tak zazwyczaj pożadkuje wyniki według identyfikatora
ale jak to zrobic według daty wiem że jest typ pola DATE albo DATETIME
jednak dalej nie wiem jak posegregować :)
Nie odsyłajcie mnie z kwitkiem bardzo was prosze.
Użytkownik ojajej edytował ten post 10 marzec 2006, 03:08


select coś from tabela order by data;
select coś from tabela order by data desc; //odwrócone wyniki
Nie wystarczy takie cos?

A czy MySql dobrze mi to posegreguje według daty ?
przezciez są dni miesiące i lata, czy on będzie wiedział że
powinno się uwzględnić rok przystępny, luty który ma 28 dni
i tak dalej ?


A czy MySql dobrze mi to posegreguje według daty ?
przezciez są dni miesiące i lata, czy on będzie wiedział że
powinno się uwzględnić rok przystępny, luty który ma 28 dni
i tak dalej ?



Właśnie to zrobiłem.
Problem jednak polega na tym że wyświetla mi date w formacie RRRR-MM-DD
a ja chciałem dokładnie odwrotnie czyli DD-MM-RRRR.
Czy istnieje jakaś funkcja która mi automatycznie zamieni kolejność ?
czy sam musze napisać takową bazująca na substr() ?.
Pozdrawiam.

To w bazie trzeba było ustawić format daty.

hmm prozaiczne i proste pytanie . . . jak?
:) albo jeśli jest to bardziej skomplikowane to bardzo cię
prosze o adres manuala do MySql'a
gdzie jest to wytłumaczone w jakiś przystępny sposób ewentualnie jak to zrobić
phpMyAdmin 2.8.0-beta1

Ale ty tą bazę masz już utworzoną?

Właśnie z datą w MySQL jest tak, że on a jest w formacie RRRR-MM-DD. Dlatego ja nie robie zwykle pól DATE, tylko zwykłe CHAR i przez funkcję date('d.m.Y'); biorę se date w formacie Dzień.Miesiąc.Rok np. 10.03.2006
Użytkownik mmatheww edytował ten post 10 marzec 2006, 14:31
tak mam ją już utworzoną
zmieniłem typ pola na date właśnie wertuję dokumentację do typu Date
na mysql.com ale jest tam tyle tekstu że bardzo trudno jest coś wyłuskać

----
no tak ale co wtedy z sortowanie według daty
----
jak sie napisze order by data to mysql zglupieje ....
bo nie bedzie zapewne sortowal od roku najpierw tylko od dnia
Użytkownik ojajej edytował ten post 10 marzec 2006, 14:33

tak mam ją już utworzoną
zmieniłem typ pola na date właśnie wertuję dokumentację do typu Date
na mysql.com ale jest tam tyle tekstu że bardzo trudno jest coś wyłuskać

----
no tak ale co wtedy z sortowanie według daty
----
jak sie napisze order by data to mysql zglupieje ....
bo nie bedzie zapewne sortowal od roku najpierw tylko od dnia

a ja bym był właśnie to sprawdziłem ale znalazłem też na stronie rozwiązanie tego problemu "prawie"
$sql = "SELECT DATE_FORMAT(date_column_name, '%d-%m-%Y') AS new_date FROM table_name WHERE....";
teraz tak.... nie wiem jak ustawic pole data na ten format kombinowalem z "UPDATE"
ale ciągle zwracany jest błąd help please : )
zapytanie:
$sql = "SELECT DATE_FORMAT(date_column_name, '%d-%m-%Y') AS new_date FROM table_name";
wyswietli date w podanym formacie,
jednak jak to ustawic zeby ta data sie zapisywala w takim formacie ? :)

mysql> SELECT DATE_FORMAT(data, '%d-%m-%Y') FROM news;
+-------------------------------+
| DATE_FORMAT(data, '%d-%m-%Y') |
+-------------------------------+
| 10-03-2006 |
| 17-03-2006 |
| 03-10-2006 |
| 17-03-2006 |
| 17-03-2006 |
+-------------------------------+
5 rows in set (0.00 sec)

mysql>

ROZWIĄZANIE ::::

mysql> SELECT id,autor,komentarze,rodzaj,aktywny, DATE_FORMAT(data, '%d-%m-%Y') AS news FROM news ORDER BY data DESC; +----+------------+------------+----------+---------+------------+ | id | autor      | komentarze | rodzaj   | aktywny | news       | +----+------------+------------+----------+---------+------------+ |  5 | 1234567890 |          0 | adfhagfa |       1 | 14-03-2006 | |  4 | orglee     |          0 | [TEST]   |       1 | 13-03-2006 | |  3 | orglee     |          0 | [TEST]   |       1 | 12-03-2006 | |  2 | orglee     |          0 | [TEST]   |       1 | 11-03-2006 | |  1 | orglee     |          0 |          |       1 | 10-03-2006 | +----+------------+------------+----------+---------+------------+ 5 rows in set (0.01 sec) mysql>

nie wiem czy sie da wstawiac date w takim formacie grunt ze sie da wyswietlac
wedlug daty rekordy
trzeba tylko po select dac nazwe pol w bazie w przciwnym wypadku zapytanie zwroci tylko wartosci pola select
Użytkownik ojajej edytował ten post 10 marzec 2006, 15:19
Chyba ustawić się nie da, bo pole DATE ma ustawioną domyślnie YYYY-MM-DD

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.