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
 
 » piszczyk 04:17
 » Shark20 03:52
 » Martens 03:45
 » cVas 02:53
 » mo2 02:43
 » rzymo 02:25
 » mirek190 02:21
 » Visar 02:04
 » MARC 01:52
 » BoloX 01:09

 Dzisiaj przeczytano
 41130 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
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-2024, TwojePC.PL