![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 6.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam taki problem, jest tabela a w niej pole czas z takimi danymi (posortowane dokładnie w taki sposóB) CZAS 2007-12-03 06:51:01 2007-12-03 15:03:01 2007-12-04 06:54:01 2007-12-04 15:01:01 2007-12-05 06:53:01 2007-12-05 15:00:01 2007-12-06 06:58:01 2007-12-06 15:02:01 2007-12-07 06:50:01 2007-12-07 15:02:01 2007-12-10 06:57:01 Czy jest w ogóle możliwe za pomocą SQL utworzenie zapytania, które potrafiło by w nowej kolumnie lub w inny sposób pokazać wynik różnice pomiędzy parami rekordów np w godzinach . 2007-12-03 06:51:01| 2007-12-03 15:03:01|8:11 itd 2007-12-04 06:54:01| 2007-12-04 15:01:01|8:07 Oczywiście w rachubę nie wchodzi założenie warunku na dany dzień bo czasami może zdarzyć się taka para (na przełomie doby) 2007-12-04 23:53:01| 2007-12-05 06:01:01|8:08 Przykładowy wynik podałem w godzinach : z minutami |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Poniższe zapytanie będzie pokazywalo roznice pomiedzy biezacym rekordem, a poprzednim.
Jezeli chcesz to zrobic parami musisz dodac sobie jeszcze jedna zmienna, ktora bedzie przyjmowala na zmiane warotsci 1 i 0 i liczyc roznice miedzy datami np. tylko dla jedynki. Roznica dat w ponizszym przykladzie jest w minutach (jako int).
-------------------- --------------------------------------------------------------------------------
weblog.axent.pl -------------------------------------------------------------------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 6.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje za zainteresowanie tematem, ale coś mi to nie działa
![]() łącze sie z bazą za pomocą takiego narzędzia SQL Server Management Studio Express tworze jak zwykle new query daje to:
i otrzymuje niestety Msg 170, Level 15, State 1, Line 1 Line 1: Incorrect syntax near ':'. Msg 137, Level 15, State 2, Line 4 Must declare the variable '@intLastDate'. Nie jestem biegły w MSSQL większość prostych rzeczy robie z doskoku w miarę potrzeb. Niestety nie wiem jak mu zdeklarować inaczej tą zmienną by ją widział próbowałem już bez ":" w nawiasach itd ale tez sie wywala ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Mój błąd - ślepo założyłem, że chodzi Tobie o MySQL.
Nie pracowałem za dużo z MSSQL, ale może poszukaj tam funkcji rankingujących, bo to jedyna szansa na zrealizowanie tego zapytania. A można też tak:
Tylko to jest mało optymalne. Ten post edytował prond 3.01.2008, 13:32:31 -------------------- --------------------------------------------------------------------------------
weblog.axent.pl -------------------------------------------------------------------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 6.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje za podpowiedz
![]() , będę "grzebał" dalej , a jeśli chodzi o błąd; to ja zawiniłem niedoprecyzowaniem o jaki typ bazy chodzi. Cytat A można też tak:
Chyba jednak nie Msg 195, Level 15, State 10, Line 1 'TIMESTAMPDIFF' is not a recognized function name. Ten post edytował Unises 3.01.2008, 13:47:03 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No to juz kwestia funkcji do operacji na datach - wyszukaj w manualu 'date and time functions' i pewnie znajdziesz tam odpowiednik MySQL'owego TIMESTAMPDIFF.
Moze tez wystarczy tobie prosta roznica : MAX(modified) - Post.modified -------------------- --------------------------------------------------------------------------------
weblog.axent.pl -------------------------------------------------------------------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 09:00 |