Avatar billede signori Nybegynder
25. marts 2005 - 18:42 Der er 9 kommentarer

insert af dato laver mystiske ting

Jeg kører denne update:
Insert into Klip (dato) values(31-03-2005)
og i min tabel bliver der nu indsat 03-08-1894. Why is that? Skal jeg fortælle tabellen/dato klonnen hvordan formatet er? Hvordan gør jeg det?
Avatar billede bromer Nybegynder
25. marts 2005 - 19:37 #1
Det lyder lidt mærkeligt. Hvad sker der hvis du har quotes omkring?
Avatar billede signori Nybegynder
25. marts 2005 - 19:40 #2
Det giver SQL fejl. Til orientering er dato kolonnen af typen datetime
Avatar billede bromer Nybegynder
25. marts 2005 - 19:58 #3
Jeg har lige testet, og jeg kan uden problemer sætte den korrekte dato ind med dette:

insert into Klip (dato) values('2005/03/31');

Prøv det :)
Avatar billede bromer Nybegynder
25. marts 2005 - 20:00 #4
Dette virker også, så du skulle bare lave formatet om til engelsk og smide quotes på:

Insert into Klip (dato) values('2005-03-31');
Avatar billede signori Nybegynder
25. marts 2005 - 21:17 #5
Det fungerer også her bromer - men når nu min applikation skal bruge det danske format, vil det nok være bedre at få MS SQL til at køre efter dette format. Ved du hvor jeg ændrer dette?
Avatar billede bromer Nybegynder
25. marts 2005 - 21:45 #6
Jeg kender ikke til nogen måde at ændre det, men det kan være at der er nogle andre herinde der ved det. Ellers kan du smide en funktion udenom der konverterer fra dansk til engelsk format:

IF EXISTS(SELECT name FROM sysobjects WHERE name = 'dkToeng' AND type = 'FN')
    DROP FUNCTION dkToeng;
GO

CREATE FUNCTION dkToeng(@dk_date varchar(100))
RETURNS varchar(100)
AS
BEGIN
    DECLARE @year varchar(4)
    DECLARE @month varchar(2)
    DECLARE @day varchar(2)

    SELECT @day = substring(@dk_date,1,2)
    SELECT @month = substring(@dk_date,4,2)
    SELECT @year = substring(@dk_date,7,4)

    RETURN CAST(@year + '/' + @month + '/' + @day as datetime)
END
GO
Avatar billede bromer Nybegynder
25. marts 2005 - 21:46 #7
De først par linier er der fordi jeg synes det er lettest at teste sådan, men du burde bare kunne køre CREATE FUNCTIOn delen og så være boogie.
Avatar billede ldanielsen Nybegynder
28. marts 2005 - 15:35 #8
Prøv:
SET DATEFORMAT dmy
Insert into Klip (dato) values ('31/03/2005')

Hvis det er ASP kan du gøre sådan:

strSql = "SET DATEFORMAT dmy; Insert into Klip (dato) values ('31/03/2005')"
Avatar billede zapzap Nybegynder
02. maj 2005 - 14:21 #9
Du kan bruge CONVERT, og så være specifik, f.eks.:

select convert(datetime, '31-03-2005', 103)

103 er style.
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