![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam pewnien problem. Ostatnio robiłem "najpopularniejsze newsy" i pobierałem tylko te z przeciągu 7 dni. Zrobiłem to tak:
Niby działa. Teraz potrzebuję zrobić coś podobnego. Z tym, że ma pobierać rekordy z datą mniejszą bądź równą niż aktualna. Zrobiłem coś takiego: I nic się nie wyświetla. Pomyślałem, że to pewnie przez to, że datę trzymam jako VARCHAR a nie jako DATE. To by było zrozumiałe. Tylko teraz się zastanawiam czy ten kod który jest u góry działa poprawnie. Bo na oko wyświetla prawidłowo ale w dłuższej praktyce może się okazać że coś będzie nie tak. Zapytanie jest złe? Czy to przez typ pola? Jeśli to drugie to jak mam zapisywać jako DATE datę w formacie d.m.Y bo z tego co pamiętam zawsze miałem zapisywało mi się jako Y-m-d i dlatego przeszedłem na używanie VARCHARa. Proszę o pomoc. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
WHERE date < '$date' - nie powinno byc tak?
a jaki masz format $date ? VarChar? WHERE date(date) < '$date' Ten post edytował maly_swd 11.03.2010, 09:33:46 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Tak, powinno być z ' ale to akurat nie problem.
format $date mam d.m.Y, w Varchar taki sam format. Pytanie co ma być tutaj bo nie bardzo wiem: Próbowałem coś ale nic nie wyświetla. No i nie chce działać znak <= bo wtedy wywala błąd. Ten post edytował deha21 11.03.2010, 10:10:45 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Sprawdź sobie
DATE_FORMAT lub CAST. |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat o z tego co pamiętam zawsze miałem zapisywało mi się jako Y-m-d i dlatego przeszedłem na używanie VARCHARa ałć.... wroc natychmiast to DATE. Data to data i ma byc w typie datowym a nie tekstowym. Co z tego ze w bazie widzisz kreski zamiast kropek? To przed wyswietleniem sobie skonwertuj do formatu jaki chcesz - to zaden problem
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
VARCHAR jest sortowany alfabetycznie. Przy takim formacie jak masz, zachodzi:
30.01.2010 > 28.02.2010 > 25.06.2010 > 21.12.2012 Zmiana z VARCHAR na DATE zajmie Ci raptem 4 kwerendy, plus zmiany w kodzie. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Oki, trochę kodu mam do przeglądnięcia (IMG:style_emoticons/default/winksmiley.jpg) Tym gorzej że mi się bardzo spieszy z tym.
Czyli teraz tak, żeby potem nie było że znowu źle robię (IMG:style_emoticons/default/winksmiley.jpg) Wyświetlanie daty w formacie d.m.Y z bazy w której postać to Y-m-d: Pokazuje poprawnie ale czy technicznie jest ok? (IMG:style_emoticons/default/winksmiley.jpg) I teraz na odwrót. Mam datę d.m.Y i chce przekonwertować ją do Y-m-d: Jest ok? |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jest ok. Mozesz tez formatowanie zrobic na poziomie bazy - mysql ma mase funkcji do formatowania daty
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Żeby zaoszczędzić cztery bajty ( (IMG:style_emoticons/default/tongue.gif) ) trnasferu między PHP a MySQL możesz robić tak:
Kod $data=strtotime('11.03.2010'); $data=date('Ymd',$data); i wstawiać datę do zapytań bez cudzysłowów. Ma sens jeśli Webserver i MySQL stoją na różnych maszynach. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 01:37 |