Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Wybrany czas z bazy w timestamp
przem1969
post 19.08.2013, 19:36:31
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.08.2013

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


Witam. Mam takie zapytanie i jest ok.
  1.  
  2. SELECT id, `viewcount`,SUBSTRING(title,1,57) AS 'title_substring' FROM news30_story ORDER BY `news30_story`.`viewcount`DESC LIMIT 0,7 ;
  3. UPDATE news30_story SET views = views + '1' WHERE id;
  4. SELECT `viewcount` FROM news30_story ORDER BY `viewcount` DESC LIMIT 0,7 ;


Chciałbym dodać okres 60 dni .....
Czy mogę prosić o pomoc?questionmark.gif

Ten post edytował przem1969 19.08.2013, 21:05:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
sazian
post 19.08.2013, 19:54:16
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


a do czego te 60 dni chcesz dodać ?

ps.
wywal te cudzysłowy to forum pokoloruje składnie
Go to the top of the page
+Quote Post
przem1969
post 19.08.2013, 21:03:30
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.08.2013

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


Nie chodzi o cudzysłowy skopiowałem dlatego. Chodzi mi o to że chciałbym wyciagnąc najczesciej klikane czy czytane jak to zwal z oststnich 60 dni . Po to.
Go to the top of the page
+Quote Post
Pyton_000
post 19.08.2013, 21:53:15
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


np:
  1. WHERE DATE(pole) >= DATE(NOW()) - INTERVAL 60 DAY


Ten post edytował Pyton_000 19.08.2013, 21:55:17
Go to the top of the page
+Quote Post
przem1969
post 19.08.2013, 21:58:14
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.08.2013

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


Dziekuję ale nie za bardzo rozumiem ?Zamiast mojego czy dołożyć kolejne z Where ? Mogę poprosić o wyjaśnienie?
Go to the top of the page
+Quote Post
Pyton_000
post 19.08.2013, 22:16:58
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Dokleić np:
  1. SELECT id, viewcount, SUBSTRING(title,1,57) AS title_substring FROM news30_story WHERE DATE(pole) >= DATE(NOW()) - INTERVAL 60 DAY ORDER BY viewcount DESC


Ten post edytował Pyton_000 19.08.2013, 22:17:44
Go to the top of the page
+Quote Post
przem1969
post 19.08.2013, 22:29:30
Post #7





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.08.2013

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


Co mam wpisac za pole. Kombinowałem timestamp, --> Nie trybi.
Go to the top of the page
+Quote Post
b4rt3kk
post 20.08.2013, 00:01:48
Post #8





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Może byś tak określił do czego chcesz dodać ten okres 60 dni? Żeby zapytanie zwróciło wyniki uwzględniając tylko ostatnie 60 dni? To może byś tak przestawił strukturę tabeli? Masz tam kolumnę przechowującą datę?


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
przem1969
post 20.08.2013, 00:10:57
Post #9





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.08.2013

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


Timestamp wczesniej pisałem ! Nie chce zmieniac zapytania tylko chce je ograniczyc do 60 dni. Co tu jest niejasnego? Zapytanie ma pozostac . Tylko chce ograniczyc je do 60 dni . Co mam jeszcze wyjasnic?

Ten post edytował przem1969 20.08.2013, 00:13:56
Go to the top of the page
+Quote Post
b4rt3kk
post 20.08.2013, 00:26:19
Post #10





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Cytat(przem1969 @ 20.08.2013, 01:10:57 ) *
Timestamp wczesniej pisałem ! Nie chce zmieniac zapytania tylko chce je ograniczyc do 60 dni. Co tu jest niejasnego? Zapytanie ma pozostac . Tylko chce ograniczyc je do 60 dni . Co mam jeszcze wyjasnic?


Przykro mi, ale na tej podstawie

  1. SELECT id, `viewcount`,SUBSTRING(title,1,57) AS 'title_substring' FROM news30_story ORDER BY `news30_story`.`viewcount`DESC LIMIT 0,7 ;
  2. UPDATE news30_story SET views = views + '1' WHERE id;
  3. SELECT `viewcount` FROM news30_story ORDER BY `viewcount` DESC LIMIT 0,7 ;


Nikt Ci nie powie co masz zrobić. Przedstaw strukturę tabeli.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
przem1969
post 20.08.2013, 00:38:27
Post #11





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.08.2013

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


Go to the top of the page
+Quote Post
b4rt3kk
post 20.08.2013, 07:02:25
Post #12





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Masz kolumnę o nazwie timestamp, która jest typu int? Potrzebujesz kolumny, która będzie typu TIMESTAMP i rzeczywiście będzie przechowywać datę.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
Pyton_000
post 20.08.2013, 19:14:18
Post #13





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Pomijam fakt wydajności takich tabel ale to już nie moja sprawa smile.gif

Ad. zapytania, co Ci nie trybi? Jakiś błąd? Cokolwiek ? Hee??
Go to the top of the page
+Quote Post
sazian
post 20.08.2013, 21:20:42
Post #14





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


Cytat(przem1969 @ 19.08.2013, 22:03:30 ) *
Nie chodzi o cudzysłowy skopiowałem dlatego. Po to.

1)dlatego że co ?
2)po co?
kończ zdania, będzie łatwiej zrozumieć Twoje wypowiedzi wink.gif


skoro pole jest typu int to zakładam że czas jest zapisywany w formacie unixowym. Jeśli chcesz wykonywać na nich normalne operacje przy pomocy mysql musisz je przekształcić http://dev.mysql.com/doc/refman/5.5/en/dat..._unix-timestamp http://dev.mysql.com/doc/refman/5.5/en/dat...n_from-unixtime


oczywiście jeśli upierasz się przy czasie unixowym można to zrobić inaczej. Zauważ że zapisujesz liczbę sekund, a chcesz uzyskać 60 dni, więc jak łatwo zauważyć 60 sekund *60 minut = 1 godzina , idąc dalej 60 sekund *60 minut *24 godziny =1 dzień czyli 60 sekund * 60 minut *24 godziny * 60 dni=liczba sekund w 60 dniach.
Idąc tym tropem można łatwo zauważyć że jeśli do dowolnej daty dodany liczbę sekund mieszczącą się w 60 dniach i ta suma jest większa od obecnej daty to jest to szukana przez ciebie data
czyli 5184000+data>UNIX_TIMESTAMP(NOW())
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: 14.08.2025 - 15:25