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
 
 » metacom 01:21
 » Martens 01:17
 » BoloX 01:16
 » Dzban 01:02
 » Qjanusz 00:53
 » Irys 00:51
 » ulan 00:41
 » RaPToRR 00:22
 » zibi13 00:10
 » esteban 23:52
 » alkatraz 23:48
 » Menah 23:36
 » luckyluc 23:27
 » Wolf 23:25
 » selves 23:24
 » wrrr 23:24
 » fiskomp 23:14
 » Visar 23:10
 » Magnus 23:07
 » luzak2363 23:05

 Dzisiaj przeczytano
 36884 postów,
 wczoraj 25433

 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