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
 
 » dugi 17:51
 » ligand17 17:50
 » bajbusek 17:49
 » DYD 17:44
 » KHot 17:38
 » PiotrexP 17:37
 » Rafael_3D 17:36
 » gigamiki 17:26
 » @GUTEK@ 17:25
 » Lucullus 17:22
 » MARtiuS 17:20
 » Marian30p 17:12
 » Jumper 17:10
 » Armitage 17:06
 » P@blo 17:04
 » past 17:00
 » cVas 16:59
 » Pawelec 16:54
 » soyo 16:51
 » Kenny 16:48

 Dzisiaj przeczytano
 41106 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