[ CallMeSaMaster @ 12.04.2007. 15:49 ] @
Ovako:
U jednoj tabeli imam dvije kolone koje su pocetni datum i krajni datum.Obje su DateTime tipa. Sada sam dobio da napravim novi datum koji je Datum iz prve kolone i vrijem druge kolone. Do sada sve normalno. Onda drebam da od tog datuma nadjem DATEDIFF u odnosu na danasnji datum(getDate().PS:Nije bitan redoslijed oduzimanja datuma da vas to ne buni ako ce biti negativan broj). Npisao sam sledece:

Code:
Select Datediff(hour,(convert(varchar,DATUM.START,103)+ ' ' + convert(varchar,DATUM.END,108)),getDate()) FROM DATUM WHERE ID=42

Sad imam problem jer imam novi datum tipa varchar a getDate kao i DATEDIFF koji rade sa DateTime tipom. I naravno dobijem gresku.Shvatam i zbog cega i sve to, ali postoji li neki nacin da se ipak ovo odradi.

Error

Msg 242, Level 16, State 3, Line 2
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.


Ne pitajte me zasto mi treba novi datum koji se generise iz dvije kolone.Tako su mi rekli, iako ja licno smtram da je to najveca glupost koju sam ikada cuo, ali eto...

Mozda ima neko ko moze pomoci

[ zelbi @ 12.04.2007. 16:16 ] @
ako se nevaram, trebao bih samo dodati jos jedan convert :

Code:

Select Datediff(hour, convert(datetime, convert(varchar(10),DATUM.START,103)+ ' ' + convert(varchar(8),DATUM.END,108)), getDate()) FROM DATUM WHERE ID=42
[ CallMeSaMaster @ 12.04.2007. 20:32 ] @
Izvini,ali nikad:-) Mora biti nesto drugo jer sam sve convert kombinacije pokusavo... Ne znam sta da radim
[ goranvuc @ 12.04.2007. 20:42 ] @
Jedno mozda banalno pitanje: Posto ti je to novo polje dan iz prve kolone i vreme iz druge kolone, zasto onda za razliku datuma ne koristis samu prvu kolonu umesto sto se mucis sa varchar izvedenom?
[ CallMeSaMaster @ 12.04.2007. 20:53 ] @
Pa i po meni je to logicno.Ali ovi neki debili za koje radim hoce da to tako radim.Ali jednostavno ne funkcionise.A kad ih pitas zasto to tako hocete, kaze lik ne znam ali mora tako. To je nesto najgluplje sto samcuo da se radi, prije svega jer ne vidim smisao toga. Ali ipak me zanima dali i kako se ipak moze odraditi?
[ goranvuc @ 12.04.2007. 21:38 ] @
Citat:
CallMeSaMaster:

Msg 242, Level 16, State 3, Line 2
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

Ova ti greska pokazuje da pokusavas da konvertujes string u datum koji nije moguc (npr: 31 februar)
[ goranvuc @ 12.04.2007. 22:38 ] @
A evo ti i ono sto ti treba (problem je u CONVERT, tj. u ovakvim primerima koristi CAST):
Code:

SELECT DATEDIFF(dd, CAST(CAST(YEAR(DATUM.START) AS varchar(4)) + '-' + CAST(MONTH(DATUM.START) AS varchar(2)) + '-' + CAST(DAY(DATUM.START) AS varchar(2)) + ' ' + CAST(DATEPART(hh, DATUM.END) AS varchar(2)) + ':' + CAST(DATEPART(mi, DATUM.END) AS varchar(2)) + ':' + CAST(DATEPART(ss, DATUM.END) AS varchar(2)) AS datetime), GETDATE()) AS RazlikaUDanima 
FROM DATUM 
WHERE ID = 42
[ CallMeSaMaster @ 13.04.2007. 09:08 ] @
Gorane hvala, na odgovoru.Uspio sam bez casta rijesiti samo sto nisam stigo postovat sinoc.Evo kako sam uradio i sad je ok

Code:

Select DateDiff(hour,(convert(datetime,(convert(varchar,DATUM.START,105)+ ' ' + convert(varchar,DATUM.ENDE,108)),105)),getDate()) FROM DATUM WHERE ID=42

[ zelbi @ 13.04.2007. 09:14 ] @
eh da, falio je jos samo dobar format datuma :

convert(datetime, [varchar], 105)

[ podrizvan @ 13.04.2007. 13:29 ] @
Citat:
zelbi: eh da, falio je jos samo dobar format datuma :

convert(datetime, [varchar], 105)

ja i jos malo koda i gotovo.pa mogo sam i ja to reci.hehehe