Avatar billede bo_vesth Nybegynder
02. april 2003 - 08:57 Der 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


kald fra QA :
exec sp_RanyES '27/03/03 12:00:00', '27/03/03 15:00:00', 'Unit002'

Håber der er nogle der kan hjælpe.
Avatar billede -mundi- Nybegynder
02. april 2003 - 09:13 #1
prøv at angive dine parametre som datetime istedet for smalldatetime
Avatar billede venne Nybegynder
02. april 2003 - 09:20 #2
Prøv mm/dd/yy ('03/27/03 12:00:00').
Den burde også altid forstå yyyymmdd ('20030327 12:00:00').
Avatar billede bo_vesth Nybegynder
02. april 2003 - 10:58 #3
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??.
Avatar billede venne Nybegynder
02. april 2003 - 11:11 #4
Kunne du evt. formatere datoen på et andet format der hvor du trækker den ud, fx:
SELECT CONVERT(VARCHAR(30), dato, 120) AS dato
Avatar billede bo_vesth Nybegynder
02. april 2003 - 11:24 #5
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.
Avatar billede venne Nybegynder
02. april 2003 - 11:36 #6
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.
Avatar billede jobba Nybegynder
02. april 2003 - 11:48 #7
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.
Avatar billede bo_vesth Nybegynder
02. april 2003 - 13:02 #8
Tak for hjælpen i for 100. point hver.

Løste problemmet med:
SET DATEFORMAT dmy
exec sp_RanyES '27/03/03 12:00:00', '28/03/03 15:00:00', 'Unit002'
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester