Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]dodanie minut do godziny , plus usuwanie rekordów po przekroczeniu terminu
majsterpstryk
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 27.05.2010

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


Jak w prosty sposób uzyskać godzine w formacie HH:MM:SS po dodaniu do niej np 45 min?
np. 12:45:00 + 45 min = 13:30:00

Dodatkowo potrzebuje dowiedzieć się jak zrobić zeby przenosilo mi rekordy w ktorych upłyneła okreslona data i czas :
NP
  1. |id_rezerwacja |id_uzyt | data_rez | od_godz| |do_godz
  2. 2 5 2010-09-18 15:00:00 16:45:00

i np jak bedzie 16:45 to serwer sam przeniesie mi rekord do takiej samej tabeli ale o nazwie archiwum
Go to the top of the page
+Quote Post
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Co do pierwszego pytania to: http://pl.php.net/strtotime

Co do drugiego, jestem zbyt cienki w uszach.

Ten post edytował Damonsson 16.09.2010, 17:34:05
Go to the top of the page
+Quote Post
modern-web
post
Post #3





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Może dokończę...
Rekordy same z siebie się nie usuną... Musisz stworzyć do tego skrypt.
Niestety skrypt też sam o danej godzinie się nie wywoła więc rozwiązania są 2:

1. Jeśli serwer ma opcję Cron (możliwość uruchomienia harmonogramu zadań co godzinę/dzień/tydzień itp...), a tu już sprawa jest rozwiązana - Cron sam wykona skrypt o określonej porze (IMG:style_emoticons/default/smile.gif)
2. Dodasz zapytanie DELETE, które przy ładowaniu strony przez kogokolwiek będzie kasować stare rekordy (dasz klauzulę, że kasowane będą tylko te rekordy, które utraciły ważność... czyli np. now() - 12h <TO JEST TYLKO WYTŁUMACZENIE, A NIE CZĘŚĆ ZAPYTANIA> ... - jeśli nie mieszczą się w tym przedziale skrypt usuwa je z bazy... OCZYWIŚCIE SKRYPTU CI NIE PODAM CHOĆ ZNAM :] POSZUKAJ SAM. Wiesz czego szukać (IMG:style_emoticons/default/winksmiley.jpg) )

Pozdrawiam.

Ten post edytował modern-web 16.09.2010, 18:43:59
Go to the top of the page
+Quote Post
smietek
post
Post #4





Grupa: Zarejestrowani
Postów: 306
Pomógł: 32
Dołączył: 20.01.2008

Ostrzeżenie: (20%)
X----


Ja od siebie dodam jeszcze, że przechowywanie dat i czasu tak jak ty to robisz (w postaciach YYYY-MM-DD i HH:MM:SS) jest bezsensowne i nieoptymalne.
Lepiej przechowuj czas jako znacznik czasu (tworzysz tylko jedno pole INT(10) + SQL ma bardzo fajną funkcję do pokazywania aktualnego znacznika czasu: UNIX_TIMESTAMP()), wtedy nie musisz się bawić w żadne dodawanie 45 minut do danej godziny, bo do znacznika czasu dodajesz po prostu odpowiadającą ilość sekund (tak tak, robisz zwykłe dodawanie, a nie jakieś bzdurne operacje na stringach itd.)
Go to the top of the page
+Quote Post
modern-web
post
Post #5





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Ja bym się kłócił... ^^
Jeśli chcesz uzyskać precyzyjną datę to jak najbardziej DATETIME... Ale faktycznie... UNIX_TIMESTAMP()) jest o wiele wygodniejszy (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
smietek
post
Post #6





Grupa: Zarejestrowani
Postów: 306
Pomógł: 32
Dołączył: 20.01.2008

Ostrzeżenie: (20%)
X----


Cytat(modern-web @ 16.09.2010, 19:53:52 ) *
Ja bym się kłócił... ^^
Jeśli chcesz uzyskać precyzyjną datę to jak najbardziej DATETIME... Ale faktycznie... UNIX_TIMESTAMP()) jest o wiele wygodniejszy (IMG:style_emoticons/default/biggrin.gif)

DATETIME i UNIX_TIMESTAMP różni tylko forma zapisu danych do bazy.
A operacje na znaczniku czasu są o wiele prostsze (IMG:style_emoticons/default/rolleyes.gif)
Go to the top of the page
+Quote Post
goran
post
Post #7





Grupa: Zarejestrowani
Postów: 23
Pomógł: 2
Dołączył: 17.09.2010

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


Na DATETIME są równie proste ... ADDDATE(data, INTERVAL 2 DAYS) - nie ma potrzeby działania na stringach. Poza tym pozostają np. działania gdy chcesz kolumnę z datami sprawdzić na np. tylko miesiące danego roku. Przy unixowych znacznikach będzie to trudniejsze niż WHERE LEFT(data, 7) = "2010-08".

Każdemu według potrzeb Panowie (IMG:style_emoticons/default/winksmiley.jpg) .
Go to the top of the page
+Quote Post
majsterpstryk
post
Post #8





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 27.05.2010

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


dobra poradziłem sobie teraz pytanie jak porównywać godziny co do wielkosci np

jesli np 12:30:00 mniejsza od 12:40:00 wejdzie do ifa (IMG:style_emoticons/default/questionmark.gif) jak to zapisać
Go to the top of the page
+Quote Post
kaktus283
post
Post #9





Grupa: Zarejestrowani
Postów: 47
Pomógł: 2
Dołączył: 26.03.2010

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


Nie wiem czy dobrze zrozumiałem, ale jeśli użyjesz wyżej wymienionej funkcji to po prostu patrzysz która wartość ma więcej sekund...
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 23:34