Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » GLI 22:56
 » Katoda Lt 22:55
 » DYD 22:53
 » piotrszac 22:50
 » rulezDC 22:39
 » wrrr 22:38
 » rainy 22:37
 » marekzi 22:37
 » MARC 22:36
 » Dexter 22:36
 » Wedrowiec 22:35
 » rooter666 22:35
 » bajbusek 22:28
 » Soulburne 22:18
 » fiskomp 22:17
 » akslow 22:14
 » alien1 22:13
 » biEski 22:10
 » metacom 22:02
 » m&m 22:00

 Dzisiaj przeczytano
 21042 postów,
 wczoraj 27057

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2025
A R C H I W A L N A   W I A D O M O Ś Ć
    

SQL problem z wyborem rekordu młodszego niż X dni , laciak88 27/03/10 12:55
Witam!

Mecze, mecze i zmeczyc nie moge. Potrzebuje wyswietlic z tabeli adresy ip, ktore sa nie starsze niz 30 dni. Pisze w visual studio 2008 i mecze Accessowa bazke. Probowalem cos takiego:

"SELECT `ip_address_db` FROM tab WHERE `ip_address_db` = '" + address + "' AND `date_db` > DATESUB(d, 30, GETDATE())"

efekt:
Nie zdefiniowana funkcja 'DATESUB' w wyrażeniu.


"SELECT `ip_address_db` FROM tab WHERE `ip_address_db` = '" + address + "' AND `date_db` > DATEADD(d, -30, GETDATE())"

efekt:
Nie zdefiniowana funkcja 'GETDATE' w wyrażeniu.


"SELECT `ip_address_db` FROM tab WHERE `ip_address_db` = '" + address + "' AND `date_db` > DATEADD(d, -30, '2010-03-27')"

efekt:
Nie podano wartości dla jednego lub kilku wymaganych parametrów.


"SELECT `ip_address_db` FROM tab WHERE `ip_address_db` = '" + address + "' AND `date_db` > DATESUB(CURDATE(), INTERVAL 30 DAY)"

efekt:
Funkcja IErrorInfo.GetDescription nie powiodła się z E_FAIL(0x80004005).


"SELECT `ip_address_db` FROM tab WHERE `ip_address_db` = '" + address + "' AND `date_db` > (CURDATE() - INTERVAL '30' DAY)"

efekt:
Funkcja IErrorInfo.GetDescription nie powiodła się z E_FAIL(0x80004005).


Co robie zle i jak powinienem rozwiazac problem?

Pozdrawiam!

"To Alcohol! The cause of, and solution to, all of
life's problems."

  1. dodam , laciak88 27/03/10 12:59
    ze w kolumnie data_db jest data w formacie rrrr-mm-dd

    "To Alcohol! The cause of, and solution to, all of
    life's problems."

  2. rozwiazanie , laciak88 27/03/10 15:31
    "SELECT `asn_db` FROM tab WHERE `ip_address_db` = '" + address + "' AND (DATE() - `date_db`) < 30"

    MS Access nie ma curdate(), tylko date() i nie ma datesub(), a dateadd() cos tez mi problemy sprawialo

    "To Alcohol! The cause of, and solution to, all of
    life's problems."

    1. Z punktu wydajnosci chyba lepiej aby... , Kilgor-Admin 27/03/10 16:15
      ... przy porwnaniu nie przetwarzal kazdego rekordu i odejmowal dni lepiej porownywac bez przetwarzania

      Pozdr. Kilgor
      Admin Board'a

      1. mozesz szerzej? , laciak88 27/03/10 16:23
        wyjasnij i najlepiej podaj przyklad, bo w sqlu nie siedze, ale zaciekawiles mnie tym. W tym konkretnym wypadku wydajnosc nie musi byc wielka, bo jest to bardzo prosta baza podreczna tylko.

        "To Alcohol! The cause of, and solution to, all of
        life's problems."

  3. Ale lepiej miec chyba lepsze nawyki , Kilgor-Admin 27/03/10 19:58
    przyklad w mysql baza duzo rekordow z nalozym na pole daty indexem

    select * from tabela where poledaty>=DATE_SUB(Now(), INTERVAL 12 HOUR)


    select * from tabela where DATE_ADD(poledaty, INTERVAL 12 HOUR)>=Now()


    Drugi prrzyklad bedzie maglowal bo musi dodac do kazdego pola godziny
    pierwszy doda raz i uzyje indexow pomijam uzywanie Now() w mysql ktore nie pozwala na query cacheale to juz inna bajka

    Pozdr. Kilgor
    Admin Board'a

    1. jasne , laciak88 27/03/10 23:28
      pierwsze nie zadzaial, a z drugim musze jeszcze powalczyc; moze cos zdzialam

      "To Alcohol! The cause of, and solution to, all of
      life's problems."

    
All rights reserved ® Copyright and Design 2001-2025, TwojePC.PL