Avatar billede steen Nybegynder
21. juli 2004 - 10:16 Der er 5 kommentarer og
2 løsninger

Dato problemer

Jeg har nogle spøjse problemer med dato indsætning

SQL2000 er konfigureret til Danish_Norwegian_CI_AS

Og når jeg prøver følgende:
INSERT INTO dato (dato) VALUES (CAST(31/03/71 AS smalldatetime))
Er resultatet i tabellen: 01-01-1900

Hvis jeg ændrer min SQL til:
INSERT INTO dato (dato) VALUES (CAST(31-03-71 AS smalldatetime))


Får jeg resultatet:
Server: Msg 8115, Level 16, State 2, Line 1
Arithmetic overflow error converting expression to data type smalldatetime.
The statement has been terminated.

Hvad sker der?

/Steen
Avatar billede majkat Nybegynder
21. juli 2004 - 10:28 #1
eet ord: citationstegn.
Avatar billede steen Nybegynder
21. juli 2004 - 10:33 #2
Hmmm... mener du: INSERT INTO dato (dato) VALUES (CAST('31/03/71' AS smalldatetime))

Det vil den nemlig ikke godtage!!
Avatar billede bennytordrup Nybegynder
21. juli 2004 - 11:09 #3
flere ord: brug ISO-formatet ved datokonstanter:

insert into dato(dato) values ('19710331')
Avatar billede bennytordrup Nybegynder
21. juli 2004 - 11:10 #4
Uanset hvordan, SQL Server gemmer og viser datoformater, vil den altid genkende og acceptere ISO-formatet (yyyymmdd) og konvertere dette korrekt til sit interne format.
Avatar billede steen Nybegynder
21. juli 2004 - 11:11 #5
ok... nu har jeg fundet frem til, at den GERNE vil modtage følgende:

INSERT INTO dato (dato) VALUES (CAST('03/31/71' AS smalldatetime)) og når jeg kigger i DBen bagefter vises den sådan her: 31-03-1971 og det er også rigtigt, men hvorfor skal jeg så smide den ind på UK maner for at den godtager det... DBen ER sat til dansk! Skulle jeg så ikke også kunne følgende: INSERT INTO dato (dato) VALUES (CAST('31-03-1971' AS smalldatetime))

/Steen
Avatar billede bennytordrup Nybegynder
21. juli 2004 - 11:14 #6
SQL Serveren gemmer IKKE datoen i formatet 31-03-1971! Den gemmer det i sit eget format (AFAIR en kommatalsværdi, hvor heltalsdelen er datoen og kommadelen tidspunktet).

At du ser datoen som 31-03-1971 skyldes, at du har sat SQL Server til at VISE i et bestemt format.

Som jeg skrev: Brug ISO-formatet, når du angiver datokonstanter. Det format genkendes altid!
Avatar billede skwat Praktikant
21. juli 2004 - 11:15 #7
Du kan bruge convert for at være eksplicit med dit format.
Hvis du tilgår din database fra ado kan du bruge en ado parameter, og på den måde holde datatyper rene.
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