Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] sumowanie okresów czasu i podawanie w latach
kamiox
post
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!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
dr_bonzo
post
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.
Go to the top of the page
+Quote Post
kamiox
post
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 :/
Go to the top of the page
+Quote Post
dr_bonzo
post
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]
Go to the top of the page
+Quote Post
krzych
post
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)
Go to the top of the page
+Quote Post
krzych
post
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]
Go to the top of the page
+Quote Post
FiDO
post
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!
Go to the top of the page
+Quote Post
kamiox
post
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 ;-)
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 - 12:49