14. juli 2003 - 06:23Der er
4 kommentarer og 1 løsning
6 spørgsmål om datoer
1) Er man sikker på at undgå fejl i de lagrede datoer, hvis man konsekvent indsætter på formen yyyy-mm-dd og benytter GetDate() som default-værdi?
2) Er det muligt at formatere datoer ved udtræk til et selvdefineret format (f.eks. dd/mm-yyyy, kl. hh:nn) ligesom man kan i bl.a. Access og MySQL?
3) Kan man selv bestemme, hvilket format datoerne skal opbevares i i databasen? Lige nu er formatet åbenbart automatisk sat til dd-mm-yyyy, men jeg ville foretrække, at det var yyyy-mm-dd.
4) Vælger man som standard bare typen DateTime, uanset om man vil opbevare datoer, klokkeslæt eller begge dele?
5) Hvis man skal have en variabel fra ASP indsat i et datofelt (f.eks. 27-11-2002) - kan man så formatere denne med convert-funktionen i SQL-sætningen til 2002-11-27, eller skal det gøres med ASP?
6) Kan I anbefale en god bog om MS SQL på et par hundrede sider og til under 500,- der er nem at gå til og slå op i?
1) Nej, for det datoformat, som SQL Server viser og i flere tilfælde genkender, afhænger af diverse sprog-indstillinger. Men bruger du ISO-formatet (yyyymmdd) er du sikker på at undgå fejl. Du skal dog være opmærksom på, at der er tid med i GetDate(). Det kan fjernes ved følgende cast:
cast(convert(nvarchar(10), GetDate(), 112) as datetime)
I stedet for GetDate() kan du også indsætte et datetime felt fra en tabel eller en datetime variabel.
2) Formattering til bestemt format kan du gøre via Convert, se Books Online. Der er dog begrænsninger på hvilke formater, der genkendes. Bortset fra det, så er det IMO klientprogrammet, der skal sørge for formattering af datoer og tal - ikke SQL Serveren.
3) Nej. SQL Server bruger sit eget format til at gemme datoer i. Der er to typer: DateTime og SmallDateTime. Forskellen er lidt præcision samt hvilke årstal, der kan gemmes. Det er dokumenteret i Books Online.
4) Der er som nævnt både dato og tid i DateTime.
5) Som nævnt i 1) mener jeg, at det er sikrest at anvende ISO-formatet. Du formatterer datoen i ASP til formattet yyyymmdd, så sørger SQL Server for at gemme det korrekt.
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.