Cudan SQL upit

poruka: 16
|
čitano: 2.461
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
Cudan SQL upit

Pozdrav.


Imam jedan cudan problem sa SQL upitom, tocnije sa WHERE dijelom SQL upita. Naime, imam tablicu racun i u toj tablici imam izmedju ostalog i stupac mjesec u kojem su upisani mjeseci u obliku 07/2010.

 

U toj tablici postoje svi podaci za:
01/2010, 02/2010, 03/2010, 04/2010, 07/2010, 08/2010, 12/2010, 01/2011 te 02/2011.


Znaci, ne postoje podaci za 05/2010, 06/2010, 09/2010, 10/2010, 11/2010 i sad......

 

 

Kad mu kazem:
SELECT * FROM racun
lijepo mi sve ispise, sve sto postoji u toj tablici, ok - to mi je jasno

 

Kad mu kazem:
SELECT * FROM racun WHERE mjesec BETWEEN '04/2010' AND '12/2010'
takodjer mi sve lijepo ispise, sve podatke izmedju ta dva datuma znaci -> 04/2010, 07/2010, 08/2010, 12/2010

 

No, kad mu kazem ovo:
SELECT * FROM racun WHERE mjesec BETWEEN '04/2010' AND  '01/2011'

ne ispise mi nista?!

zbog cega je to tako? zar mi ne bi trebao ispisati sve podatke koji postoje u tablici izmedju ta dva datuma? E,da, napomena, ovo je obicni string, nije nikakav DATE, DATETIME....just plain ol' string.

 

Isto tako, kad mu kazem ovo:
SELECT * FROM racun WHERE mjesec BETWEEN '01/2010' AND '01/2011'

ispise mi samo dvije vrijednosti, samo '01/2010' i '01/2011'.....a ona sila svega izmedju....? nista, nula bodova.

 

Kako, zasto, pojma nemam, guglirao sam satima, nisam nista nasao. E, da, ista je prica kad umjesto WHERE mjesec BETWEEN nekiDatum1 AND nekiDatum2 stavim ovo: WHERE mjesec>=nekiDatum1 AND mjesec<=nekiDatum2.

 

Ima netko nekakvu ideju? Moze help? Jer ja nisam nista nasao na guglu i ostalim stranicama.
Unaprijed hvala.

 
0 0 hvala 0
17 godina
offline
Cudan SQL upit

Polje od tog datuma ti je u kojem formatu u bazi? varchar ili datetime?

I'm going woo woo
 
0 0 hvala 0
14 godina
neaktivan
offline
Cudan SQL upit

stavio sam varchar(20) odnosno nvarchar(20) pa ne radi

 
0 0 hvala 0
15 godina
neaktivan
offline
Cudan SQL upit

Kad uspoređuješ stringove (a zašto si uopće koristio stringove za zapis datuma??), 01 je manje od 04 i normalno da ti ništa ne ispiše kad mu daš range od 04 do 01.

 

Dva najjednostavnija rješenja bi ti bila da ili:

a) pretvoriš to polje u datum i radiš s datumima

b) promijeniš način kako zapisuješ datume - dakle umjesto 01/2010 zapiši datum kao 2010/01.

 

Nadam se da sam pomogao.

 

 

Retry. Reboot. Reinstall. Reformat.
Moj PC  
2 0 hvala 0
17 godina
offline
RE: Cudan SQL upit
pavle kaže...

stavio sam varchar(20) odnosno nvarchar(20) pa ne radi

nvarchar ti sluzi za extended charset, npr ako mislis koristiti nase znakove (UTF-8 npr) i onda zapravo u ovih 20 polja mozes spremiti 5 znakova jer jedan znak zauzima 4 polja.

 

Dalje, nemozes usporedjivati datume ako su ti u varcharu, tu zapravo usporedjujes stringove, a ne datume. Datum obavezno stavljaj u datetime formatu ili u nekom od slicnih date formata.

I'm going woo woo
Poruka je uređivana zadnji put čet 29.7.2010 9:37 (tnakir).
14 godina
neaktivan
offline
Cudan SQL upit

ok, hvala.

 

a kako bi onda napravio da mi se u tu tablicu iz textboxa rucno unosi mjesec npr (07/2010) - radi se o asp.net-u.

Tako mi je najlakse, jer i sve ostale vrijednosti koje imam u tablici sam rucno unosio sa textboxa te proslijedjivao stored proceduri koja onda te podatke unosi u tablicu? ima netko ideju?

 

ne morate ispisati kompletnu stored proceduru, kod u asp.net-u, nego samo postupak kako bi to drugacije mogao napraviti.

 

Ideja mi je bila, radi jednostavnosti, da se sve unosi putem textboxa, pa i 07/2010.....

 

 

imam nekoliko textboxova i npr unesem ime pa TAB, pa unesem prezime pa TAB, pa unesem taj mjesec pa TAB.....i na kraju gumb posalji. Ima mozda neki drugi nacin kako bi se to moglo napraviti, ovo mi je bilo najjednostavnije, tako da sve podatke koje trebam unijeti, unesem za manje od minute.

 
0 0 hvala 0
14 godina
neaktivan
offline
Cudan SQL upit

to za nvarchar i UTF znam, poznato mi je to, al svejedno hvala na toj informaciji

 
0 0 hvala 0
17 godina
offline
Cudan SQL upit

Stavi dva dropdowna... jedan za mjesec, jedan za godinu pa kemijaj dalje?

I'm going woo woo
 
0 0 hvala 0
15 godina
neaktivan
offline
Cudan SQL upit

Možeš i sa substring "iščupati" mjesec u jednu varijablu, godinu u drugu i onda ih spremiš kaao GGGGMM u bazu (ako stvarno ne želiš raditi s date poljem u bazi - iako ti to ne savjetujem, vidiš i sam u kakve se probleme možeš dovesti posve bespotrebno;).

Retry. Reboot. Reinstall. Reformat.
Moj PC  
0 0 hvala 0
17 godina
offline
RE: Cudan SQL upit
vlad0 kaže...

Možeš i sa substring "iščupati" mjesec u jednu varijablu, godinu u drugu i onda ih spremiš kaao GGGGMM u bazu (ako stvarno ne želiš raditi s date poljem u bazi - iako ti to ne savjetujem, vidiš i sam u kakve se probleme možeš dovesti posve bespotrebno;).

A cuj, date/datetime tip nije tu bzvz.

I'm going woo woo
14 godina
neaktivan
offline
Cudan SQL upit

mislim da sam rijesio problem, u bazu sam stavio mjesec kao DATETIME, a onda sam prilikom unosa ostavio textbox u kojem svejedno upisujem 07/2010 pomocu ovoga:

 

command.Parameters.Add("@mjesec", SqlDbType.DateTime).Value = Convert.ToDateTime(TextBox3.Text);

 

to je za pocetak, tek toliko da vidim dal mi radi unos podataka u bazu. Kad unesem u textbox 07/2010 on mi u bazu upise ovo:

2010-07-01 00:00:00.000, pa sad gledam dal se to moze nekako ljepse napisati.

 

 

hvala na smjernicama, ako se jos necega sjetite, ili ako nesto radim krivo, ako npr ovo sad sto sam napravio sa Convert....nije preporucljivo, nije good programming practice, slobodno recite, i ja jos ucim :) pa radim poneku gresku along the way.

 
0 0 hvala 0
17 godina
offline
Cudan SQL upit

DateTime.TryParse...

 

da pokusas sa ovim?

I'm going woo woo
 
0 0 hvala 0
17 godina
online
RE: Cudan SQL upit
tnakir kaže...
pavle kaže...

stavio sam varchar(20) odnosno nvarchar(20) pa ne radi

nvarchar ti sluzi za extended charset, npr ako mislis koristiti nase znakove (UTF-8 npr) i onda zapravo u ovih 20 polja mozes spremiti 5 znakova jer jedan znak zauzima 4 polja.

lol

Svašta...

Always code as if the one ending up maintaining your code is a violent psychopath who knows where you live.
17 godina
offline
RE: Cudan SQL upit
Elles D. kaže...
tnakir kaže...
pavle kaže...

stavio sam varchar(20) odnosno nvarchar(20) pa ne radi

nvarchar ti sluzi za extended charset, npr ako mislis koristiti nase znakove (UTF-8 npr) i onda zapravo u ovih 20 polja mozes spremiti 5 znakova jer jedan znak zauzima 4 polja.

lol

Svašta...

Pardon... Dakle varchar ima 8 bita dok nvarchar ima 16bita. Krivo sam se izrazio.

I'm going woo woo
14 godina
neaktivan
offline
Cudan SQL upit

ovaj clanak sam sad nasao za DateTime.TryParse()

http://geekswithblogs.net/dotNETvinz/archive/2009/05/27/using--datetime.tryparse.aspx

 

Why Use DateTime.TryParse?
If the user enters a non valid date formats in the TextBox then the method DateTime.Parse will throw a FormatException because the method cannot recognize the date format supplied.


moze i tako, ali umjesto toga sam stavio RegularExpressionValidator i pomocu regularnih izraza rijesio problem da se datum upisuje iskljucivo u formatu mjesec/godina (07/2010).

na to si mislio kad si spominjao DateTime.TryParse()?

 
0 0 hvala 0
17 godina
offline
RE: Cudan SQL upit
pavle kaže...

ovaj clanak sam sad nasao za DateTime.TryParse()

http://geekswithblogs.net/dotNETvinz/archive/2009/05/27/using--datetime.tryparse.aspx

 

Why Use DateTime.TryParse?
If the user enters a non valid date formats in the TextBox then the method DateTime.Parse will throw a FormatException because the method cannot recognize the date format supplied.


moze i tako, ali umjesto toga sam stavio RegularExpressionValidator i pomocu regularnih izraza rijesio problem da se datum upisuje iskljucivo u formatu mjesec/godina (07/2010).

na to si mislio kad si spominjao DateTime.TryParse()?

da parsas taj datum u valid DateTime format, ali ako si vec rijesio onda ok.

I'm going woo woo
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice