Avatar billede oasen Nybegynder
14. juli 2003 - 06:23 Der 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?
Avatar billede arne_v Ekspert
14. juli 2003 - 08:34 #1
re 6)

En search på Amazon efter "SQL Server 2000" i Books kategorien gav
126 hits, så der er nok bøger at vælge imellem.

De koster typisk 30-40 USD og med dagens dollars-kurs er det ikke
slemt selv når der skal ligges fragt oveni.

Du kan læse reviewene af bøgerne og danne dig et indtryk af hvad slags
bog det er.

Jeg har selv SQL Server 7 versionen af "SQL Server 2000: The Complete Reference" og er ikke specielt imponeret af den, så den vil jeg ikke anbefale.
Avatar billede bennytordrup Nybegynder
14. juli 2003 - 09:55 #2
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.
Avatar billede oasen Nybegynder
14. juli 2003 - 13:33 #3
Ang. 2 - så er der altså ikke flere valgmuligheder end med styles: (?)

1  101  mm/dd/yy
2  102  yy.mm.dd
3  103  dd/mm/yy
4  104  dd.mm.yy
5  105  dd-mm-yy
6  106  dd mon yy
7  107  mon dd, yy
8  108  hh:mi:ss
9  109  mon dd yyyy
10  110  mm-dd-yy
11  111  yy/mm/dd
12  112  yymmdd
13  113  dd mon yyyy hh:mi:ss:mmm (24h)
14  114  hh:mi:ss::mmm (24h)
Avatar billede bennytordrup Nybegynder
14. juli 2003 - 16:37 #4
Ikke, hvad der læses i Books Online.

Bemærk, at tallene under 100 giver 2-cifret årstal, hvor tallene over 100 giver 4-cifret årstal.
Avatar billede oasen Nybegynder
16. juli 2003 - 04:12 #5
Okay - mange tak ;)
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