Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]dodanie minut do godziny , plus usuwanie rekordów po przekroczeniu terminu
Forum PHP.pl > Forum > Przedszkole
majsterpstryk
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
Damonsson
Co do pierwszego pytania to: http://pl.php.net/strtotime

Co do drugiego, jestem zbyt cienki w uszach.
modern-web
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.
smietek
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.)
modern-web
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
smietek
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
goran
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.
majsterpstryk
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ć
kaktus283
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...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.