![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 13.10.2003 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
Mam tabele w której znajduja się kolumny data rozpoczęcia i data zakończenia. I teraz może być w niej ileś tam rekordów, w ostatnim może nie być podana data zakończenia.
np. data rozp data zako 1995.05.12 1996.01.22 1997.05.12 2001.01.11 2003.10.22 I teraz moeje pytanie, jak napisać zapytanie sql żeby można było wyciągnąc sume wszystkich okresów i podanie jej np. w latach. Nie miałem pomysłu jak napisać, żeby przy braku daty zakończenia, brał aktualną date. Ma ktoś pomysł jak napisać takie zapytanie, myślę że wmiare jasno napisałem o co mi chodzi. Pozdro! |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Moja propozycja:
- $CZAS = 0; // suma wszystkich okresow - kazda date zamienic na postac (int) - dla kazdego wiersza: * jesli sa dwie daty: od drugiej odjac pierwsza i dodac do $CZAS * jesli jest jedna data: to od daty obecnej odjac ta jedyna i dodac do $CZAS - $CZAS zawiera sume wszystkich okresow - teraz tylko zamienic to na postac czytelna dla ludzi. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 13.10.2003 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
a możesz podać konkretne zapytanie sql, bo nie bardzo rozumiem. Chcę tego użyć w MS ACCESS, którego niestety dobrze nie znam :/
|
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
MSACCESA nie znam w ogole, ale tam wystarczy pobrac wszystkie daty do jakiejs zmiennej (tablicy) a reszta to operacje w php.
EDIT: ------------------------------------------------------------ [php:1:733c364400] <?php // wersja dla MySQLa, bez obslugi bledow $czas = 0; $connection = mysql_connect(...); $result = mysql_query("SELECT kolumna_rozpoczecia, kolumna_zakonczenia FROM tabela", $connection); while ($row = mysql_fetch_row($result)) { // 0 - kolumna_rozpoczecia, 1 - kolumna zakonczenia // nie wiem jak skonwertowac date z bazy do daty typu timestamp (liczba calkowita) if (empty($row[1])) { $czas += (time() - $row[0]); } else { $czas += ($row[1] - $row[0]); } } print("Calkowity czas: $czas"); // tutaj mozesz wykonywac dowolne operacje na dacie, np. ilosc lat to: floor($czas / (60*60*24*365)) // ilosc sekund w roku z 365 dniami ?> [/php:1:733c364400] |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 8.05.2002 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
W Accessie na pewno tak:
[sql:1:4ca08f7557]SELECT IIf(IsNull([DataZakonczenia]),Date(),[DataZakonczenia])-[DataRozpoczecia] AS ilosc_dni FROM twoja_tabela;[/sql:1:4ca08f7557] Pozdrawiam i powodzenia (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 8.05.2002 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
I oczywiscie zapomniałem o sumie huehue:
[sql:1:976f309669]SELECT Sum(IIf(IsNull([DataZakonczenia]),Date(),[DataZakonczenia])-[DataRozpoczecia]) AS ilosc_dni FROM twoja_tabela;[/sql:1:976f309669] |
|
|
![]()
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
krzych - 1 ostrzezenie!
Swoje posty mozna edytowac! |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 13.10.2003 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
dzięki za pomoc, punkt powędrował do Ciebie ;-)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 12:49 |