[ bloker @ 03.12.2008. 08:36 ] @
U bazi je postavljeno ako nije unesen datum da on sam ubaci default-ni datum "0001-01-01" e sada kada to kupim u program i saljem na izvjestaj ruzno izgleda kada stoji taj datum.. pa me sada interesuje da li ja nekako mogu da napisem IF uslov u sql kodu..
tj. gdje je god defaultna vrijednost u sql da mi napishe null, a da mi ne remeti podatke u bazi..

npr IF(datum=="0001-01-01") datum="null";
[ bogdan.kecman @ 03.12.2008. 08:50 ] @
prvo, za datum je iskusno da stavis da je default vrednost NOW() tako da ti ako ne uneses datum on upise trenutno vreme... no vezano za tvoje pitanje odgovor je DA.

http://dev.mysql.com/doc/refma...en/control-flow-functions.html

Citat:


IF(expr1,expr2,expr3)
If expr1 is TRUE (expr1 <> 0 and expr1 <> NULL) then IF() returns expr2; otherwise it returns expr3. IF() returns a numeric or string value, depending on the context in which it is used.


Code:

mysql> SELECT IF(1>2,2,3);
        -> 3
mysql> SELECT IF(1<2,'yes','no');
        -> 'yes'
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
        -> 'no'


[ bloker @ 03.12.2008. 11:22 ] @
Nisam mogao da postavim da upise trenutno vrijeme.. posto je taj datum neki podatak koji ce se kasnije unositi i treba da bude prazan

nego hvala na ovome pomoglo mi je rijesio sam problem
[ bogdan.kecman @ 03.12.2008. 11:30 ] @
hm, onda si trebao da ostavis null u bazi i da upisujes tu null :) .. upisivanje 0001-01-01 nije bas neki "regularan" nacin za tako nesto :D no .. o ukusima ...

if resava problem .. to je bitno .. mozes sa if cak da radis stvari poput

Code:

create table t1(
  x int,
  y int.
  z int
);

select if (x>10,y,z) from t1;


to ce za svaki x>10 da ti vrati vrednost iz Y a za x<=10 vrednost iz Z :) .. pritom, obrati paznju, takav upit je uvek "table scan" sto znaci da je spoooooooor

cak i u nekim drugim situacijama if ce prouzrokovati table scan tako da ga treba koristiti sa paznjom