![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 393 Pomógł: 5 Dołączył: 6.02.2003 Skąd: The.Luciferian.Doctrine.p df Ostrzeżenie: (30%) ![]() ![]() |
Witam,
chcialbym wybrac rekordy z bazy danych, ktore zostaly wprowadzone w 3 ostatnich dniach. Format pola `date`: dzien-miesiac-rok godziny:minuty. Przedstawiam kod i prosze o jego poprawe/wytlumaczenie czemu to co napisalem nie dziala (chodzi o linijke po AND - zaznaczam, ze bez niej wszystko dziala prawidlowo).
Pozdrawiam ! Edit. Sor za bledy, poprawione. Ten post edytował AndyPSV 2.02.2006, 21:43:12 |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
1. Zły bbCode. Do zapytań używamy [ sql ] a nie [ php ] Proszę poprawić.
2. Jaki to ma związek z php? Przenoszę na Bazy danych |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Powinno byc
-------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 393 Pomógł: 5 Dołączył: 6.02.2003 Skąd: The.Luciferian.Doctrine.p df Ostrzeżenie: (30%) ![]() ![]() |
Nie dziala - wyskakuje, ze jest 0 newsow. NOW(), jesli dobrze sie orientuje nie dopasowywuje sie do dowolnego formatu.
Ma ktos jakis pomysl ? Ten post edytował AndyPSV 3.02.2006, 17:48:26 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Bo pewnie masz inny typ. Pokaz strukture.
-------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 393 Pomógł: 5 Dołączył: 6.02.2003 Skąd: The.Luciferian.Doctrine.p df Ostrzeżenie: (30%) ![]() ![]() |
Pole `date` mam typu varchar(255).
Co w takim razie musze zrobic, aby zachowac format daty ? |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 560 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
uzyc pola ktore jest stwozone do przechowywania czasu
![]() ![]() -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 393 Pomógł: 5 Dołączył: 6.02.2003 Skąd: The.Luciferian.Doctrine.p df Ostrzeżenie: (30%) ![]() ![]() |
Wracajac do problemu - mam pole typu varchar(255) i chce koniecznie zachowac format: dzien-miesiac-rok godziny:minuty. W polach typu TIMEDATE format jest przestawiony. Chce wyswietlic newsy dodane w czasie 3 ostatnich dni.
Jak to zrobic bez zmiany formatu, aby dzialalo. Prosze o pomoc ! |
|
|
![]()
Post
#9
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Przeciez mozesz zmienic format wyswietlania daty i skonwertowac format daty wprowadzanej do aplikacji do formatu bazy danych. Duzo latwiej jest operowac w bazie na datach przechowywanych w odpowiednich dla nich typach.
-------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
A ja sugeruje przechowywać date jako liczbe - zapisywać czas w formacie unixowym. Jest to dla mnie najwygodniejsze rozwiązanie, gdyż wszystkie operacje na dacie to są zwykle działania matematyczne.
Potrzebujesz odjąć 1h i 5 min od daty w bazie? Nie ma sprawy: "data - 3900" i załatwione. Plusem tego rozwiązania jest to, że możesz sobie dowolnie formatować wynik przy użyciu funkcji php albo MySQL. -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Cytat A ja sugeruje przechowywać date jako liczbe - zapisywać czas w formacie unixowym. A slyszales o czyms takim jak timestamp? ![]() -------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Czasami nad wydajność stawiam wygode korzystania z danych rozwiązań. Dla mnie jest najwygodniejsze korzystanie z tego co opisalem - i nie spodziewam sie że jest to niewydajne.
-------------------- |
|
|
![]()
Post
#13
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Cytat Czasami nad wydajność stawiam wygode korzystania z danych rozwiązań. Dla mnie jest najwygodniejsze korzystanie z tego co opisalem - i nie spodziewam sie że jest to niewydajne. Ta, oczywiscie i nie przejmujesz sie ze zapytanie trwa np 10 s?. Jesli jest typ do tego stworzony i dodatkowo sa dostepne funkcje do daty, czasow, itervalow czasowych i inne rzeczy ktore operuja na dacie to dla Ciebie to bez roznicy? -------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ta, oczywiscie i nie przejmujesz sie ze zapytanie trwa np 10 s?. Jesli jest typ do tego stworzony i dodatkowo sa dostepne funkcje do daty, czasow, itervalow czasowych i inne rzeczy ktore operuja na dacie to dla Ciebie to bez roznicy? No faktycznie. Dodawanie/odejmowanie dwóch liczb trwa 10 sekund ![]() A co do drugiej części: tak, jeżeli wygodniej korzystać mi z rozwiązania jakie podalem wyzej. Naprawde nie wmowisz mi, że odjęcie od jednego pola liczby np. 3600 razy dziesięć tysiecy rekordów jest wolniejsze od wykonania czegoś takiego jak w 1szym poście tutaj. -------------------- |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 393 Pomógł: 5 Dołączył: 6.02.2003 Skąd: The.Luciferian.Doctrine.p df Ostrzeżenie: (30%) ![]() ![]() |
OK, juz zrozumialem - wstawie date tak jak trzeba, nastepnie po jej pobraniu ja odpowiednio zmodyfikuje. Dzieki chlopaki !
P.S. Przydatne okazaly sie linki: http://dev.mysql.com/doc/refman/4.1/en/dat...-functions.html http://dev.mysql.com/doc/refman/4.1/en/string-functions.html Ten post edytował AndyPSV 3.02.2006, 21:51:42 |
|
|
![]()
Post
#16
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
OK, jesli to taka wygoda dla Ciebie to napisz mi takiego selecta.
Zwroc daty wieksza o 1 miesiac dla dat, ktore mamy w bazie danych. przykladowe rekordy: jakis tam rok przestepny 20 luty jakis tam sobie rok 20 luty wynik: ... 20 marzec ... 20 marzec Oczywiscie wygoda wedlug Ciebie? -------------------- |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem co starasz sie udowodnić...
Owszem w takim wypadku jest to mniej wygodne, ale w 99% przypadkach nadal zostane przy swoim rozwiązaniu , do czasu kiedy nie napotkam na ten 1%. Przez ten czas który sie zajmuje tworzeniem skryptów jeszcze się na to nie natknąlem. A o moją wiedzę na temat funkcji dotyczących daty i czasu w mysqlu sie nie bój. -------------------- |
|
|
![]()
Post
#18
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nie wiem co starasz sie udowodnić... Staram udowodnic Ci to ze po to sa pola do operacji czasowych jak i funkcje przeznaczone. Cytat Owszem w takim wypadku jest to mniej wygodne, ale w 99% przypadkach nadal zostane przy swoim rozwiązaniu Co jest mniej wydajne? Przeciez nic nie napisales, podalem przyklad i myslalem ze podasz mi jakies przyklady - brak argumentow. Cytat Przez ten czas który sie zajmuje tworzeniem skryptów jeszcze się na to nie natknąlem. Heheheh dobre - dla Ciebie lata przestepne i obliczanie tego to 1%? Przeciez to jest powazny problem, no nic przeciez to tylko 1%. Cytat A o moją wiedzę na temat funkcji dotyczących daty i czasu w mysqlu sie nie bój. Wcale sie nie boje. Zapytalem - niestety nie uzyskalem przykladu ktory by to uwzglednil. Odpowiedz na pytanie jest prosta. Wykorzustujac int jako przechowywanie sekund jest niepoprawne, na tej podstawie nie mozesz operacji robic na datach przynajmniej takiej jaka ja podalem. W takim przypadku musisz np warunkami i podselectem wyliczac lata przestepne i dodawac odpowiednia liczbe do wartosci int. Dla daty typu timestamp jest to zaledwie wpisanie miesiac, dzien, rok, itd To jest mechanizm wewnetrzny bardzo dobrze dopracowany przez autorow baz danych, nie trzeba zadnych wymyslnych rzeczy jak w Twoim przypadku wprowadzac. Zwrocilem Ci uwage, ze to nie jest dobry sposob, moge Ci jeszcze wiele przykladow podac, no ale jesli sie uperasz dalej to mozemy dyskusje dalej toczyc, moze osoby przegladajace forum cos wyniosa z tego. Chciales zaawansowanych rzeczy w MySQL (ostatni post na ktory razem sie wypowadalismy) to teraz slucham (chociaz to jest najprosztrze rzecz bazodanowa zwiazana z data). -------------------- |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
W 99% przypadkach z jakimi mialem do czynenia wystarczające bylo uzycie liczby do opisu daty.
Najprostszy przyklad: mam sobie koszyk produktów w sklepie internetowym, no i jak wiadomo, co jakiś czas trzeba go czyścic. Dla mnie najprostszym sposobem jest wykonanie czegoś takiego:
i sądzę ze jest to wydajniejsze niż użycie funkcji związanych z datą i czasem. Nie mówie oczywiście, że NIE MA zastosować gdzie takie coś sie nie sprawdzi. Cytat Wykorzustujac int jako przechowywanie sekund jest niepoprawne Ja bym tego tak nie nazwał ![]() ![]() Ten post edytował spenalzo 3.02.2006, 22:44:18 -------------------- |
|
|
![]()
Post
#20
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nie mówie oczywiście, że NIE MA zastosować gdzie takie coś sie nie sprawdzi. A jesli przyjdzie Ci cos zrobic gdzie nie masz wyjscia i musisz uzyc operacji na datach to co wtedy przerabiasz baze? Zamast jakiejs daty masz usunac koszyk o dokladnie miesiac i tu zaczyna sie problem. Z doswiadczenia wiem ze jesli jakis typ jest stworzony do czegos to tak sie definiuje. To nie jest moj jakis tam wymysl, to sa mechanizmy i teoria opracowana przez duza liczbe ludzi gdzie sie sprawdza w kazdej bazie danych. -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 21:25 |