02. april 2003 - 08:57Der er
7 kommentarer og 1 løsning
datetime problem
Jeg har et problem med mit datetime format i MS SQL server 2000.
Jeg har en tabel der består af x antal kolonner den ene kolonner er af typen 'datetime'. Når jeg trækker data ud af tabellen vha. select case får jeg følgende tids format vist i query analyzer '27/03/03 12:00:00', det er også godt nok. Jeg har så lavet en stored procedure som jeg kalder fra QA med selvsamme dato format, den fejler bare med følgende fejl (Error converting data type varchar to smalldatetime.) .....HVORFOR?? SP: CREATE PROCEDURE [dbo].[sp_RanyES] (@Starttime smalldatetime, @Stoptime smalldatetime, @Unitid varchar(50)) AS BEGIN IF (SELECT COUNT(*) As NoOfEs FROM (SELECT ALM_NATIVETIMEIN, ALM_DESCR, ALM_OPNAME, ALM_OPFULLNAME FROM FIXALARMS WHERE ALM_NATIVETIMEIN > @Starttime AND ALM_NATIVETIMEIN < @Stoptime AND ALM_USERFLD1 = @Unitid) As Number) = 0 RETURN(0) END GO
Jeg har prøvet at ændre typen til datetime, men jeg får samme fejl.
Der er rigtig at jeg kan bruge formatet mm/dd/yy ('03/27/03 12:00:00'). Eller yyyymmdd ('20030327 12:00:00'). Men mit problem er bare at jeg trækker min dato udad databasen og vil så ligge den tilbage i en anden tabel. Derfor er det nødvendigt at bruge formatet '27/03/03 12:00:00' som jo er det database giver mig ved udtrækket. Ellers skal jeg lave formatet om men hvordan gør man lige??.
Hvis jeg gør : SELECT CONVERT(datetime, '27/03/03 15:00:00', 113) AS dato Får jeg følgende fejl : Server: Msg 241, Level 16, State 1, Line 1 Syntax error converting datetime from character string.
Hvis jeg gøre som du skriver : SELECT CONVERT(VARCHAR(30), '27/03/03 15:00:00', 113) AS dato retunere den den godt nok datoen, men den returnere den som en varchar. JEg ønskede at den skulle opfattes som en datetime eller smalldatetime.
Når du kalder din procedure med varchar-data i en datetime-parameter så vil serveren selv konvertere værdien til datetime - hvis formatet altså kan forstås. Det var derfor jeg foreslog at bruge CONVERT.
Det har jo også hele tiden været varchar som du har kaldt med, jvf. dit oprindelige spørgsmål (Error converting data type varchar to...)
Hvad er dit programmeringsmiljø? Hvis du bruger ADO kan du komme ud over en del af disse problemer ved at definere Command-objekter med parametre.
Når man skal sammenligne samt indsætte i datofelter, skal det angives i bagvendt rækkefølge (vidst nok amerikansk format): YY-MM-DD Så dit feldt må jo blive til 03-03-27.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.