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 16.09.2010, 16:58:26
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 16.09.2010, 17:33:02
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 16.09.2010, 18:41:42
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 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ć winksmiley.jpg)

Pozdrawiam.

Ten post edytował modern-web 16.09.2010, 18:43:59


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
smietek
post 16.09.2010, 18:46:18
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 16.09.2010, 18:53:52
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 biggrin.gif


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
smietek
post 17.09.2010, 07:07:05
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 biggrin.gif

DATETIME i UNIX_TIMESTAMP różni tylko forma zapisu danych do bazy.
A operacje na znaczniku czasu są o wiele prostsze rolleyes.gif


--------------------
Go to the top of the page
+Quote Post
goran
post 17.09.2010, 12:42:57
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 winksmiley.jpg.
Go to the top of the page
+Quote Post
majsterpstryk
post 19.09.2010, 16:53:11
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 questionmark.gif jak to zapisać
Go to the top of the page
+Quote Post
kaktus283
post 19.09.2010, 20:53:05
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 1.05.2025 - 05:59