Avatar billede lklingenberg Nybegynder
16. marts 2005 - 15:06 Der 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?
Avatar billede lklingenberg Nybegynder
16. marts 2005 - 15:09 #1
Beklager stavefejlen i titlen - fortafe = foretage
:$
Avatar billede ldanielsen Nybegynder
16. marts 2005 - 15:51 #2
Du kan bruge CONVERT:

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
Avatar billede lklingenberg Nybegynder
16. marts 2005 - 15:58 #3
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..."
Avatar billede ldanielsen Nybegynder
16. marts 2005 - 15:59 #4
Ja, det kan du altså, som jeg beskriver
Avatar billede lorentsnv Nybegynder
17. marts 2005 - 13:34 #5
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.
Avatar billede lorentsnv Nybegynder
17. marts 2005 - 13:34 #6
Avatar billede lklingenberg Nybegynder
11. april 2005 - 11:59 #7
det blev en trigger løsning - lorentsnv, giver du et svar?
Avatar billede lorentsnv Nybegynder
11. april 2005 - 13:01 #8
svar :)
Avatar billede lklingenberg Nybegynder
03. oktober 2005 - 10:31 #9
lukker
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