16. marts 2005 - 15:06Der er
8 kommentarer og 1 løsning
Lade SQL Serveren fortafe datokonverteringen
Hi E, jeg har en dato på formen yyyy-mm-dd (evt. yyyy-m-d) og skal have smidt den ind i et felt af datatype smalldatetime, hvor men databasens collation er danish_norwegian_ci_as.
Er der en metode hvormed jeg kan få databasen til selv at konvertere datoen til et acceptabelt format. Altså _efter_ værdien er afsendt fra siden. Jeg er klar over, at man idet man laver sin insert/update kan anvende convert() til at få formatet korrekt, men kan man få databasen til at gøre det?
UPDATE tblTabelnavn SER dtmDatofelt = CONVERT(smalldatetime, 'yyyy-mm-dd', 120)
Men det har du jo fundet ud af
Du kan også: UPDATE tblTabelnavn SER dtmDatofelt = 'yyyy-mm-dd'
Så bruger MSSQL implicit konvertering, dvs at den selv regner ud hvordn datoen skal konverteres, og så vil du risikere at der bliver byttet om på dato og måned.
Check derfor at 2004-1-2 bliver til 2. jan og ikke 1. feb
Men det vil normalt være den bedste løsning at du sefinerer hvordan konverteringen skal laves.
Snakker vi ASP? Så kan du konvertere strengen til dato i VBScript, og så benytte ADO til insert/update
Ja, konverteringen _inden_ det sendes til basen har jeg styr på (hvadenten der sker med vbscript eller i sql udtrykket), men spørgsmålet går på om man kan få SQL Serveren til at 'tænke selv', når den _har_ modtaget datoen: "Ah, det kommer en dato på forman yyyy-mm-dd, den bytter jeg lige om på og smider ned i feltet..."
Alternativet er at bruge en trigger. Med triggers kan du lægge ind noget SQL der kører hver gang der køres en insert/update/delete mod tabellen. En trigger er derfor uafhængig af hvilken applikation der ændrer i databasen.
Du kan læse lidt mere om triggers her, samt i SQL Server Books Online.
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.