/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MS SQL Server og nyt datoformat
Fra : Casper Bang


Dato : 01-10-04 07:02

Hej,

Der er sket noget MEGET underligt med min database.
Fra midnat er SQL Server begyndt at bruge et helt andet datoformat end før!
Dette giver problemer når jeg sammenligner datoer.

Jeg kan ikke rigtigt forklare det nærmere, da jeg ikke selv fatter hvad der
kan være sket.
Databasen har nu et andet datoformat end resten af serveren (deriblandt
IIS).
Jeg har ikke rodet med datoformatet, og synes ikke jeg har gjort noget andet
end jeg plejer - jeg var slet ikke i nærheden af serveren, da det skete. Det
skete vidst præcist ved midnat!

Hvor kan jeg se, og rette, datoformatet i SQL Server?
Har i et forslag til hvad der kan være sket?


Jeg håber virkeligt i kan hjælpe. Det her giver mig store problemer.

På forhånd tak
Casper Bang



 
 
Casper Bang (01-10-2004)
Kommentar
Fra : Casper Bang


Dato : 01-10-04 07:13

> Jeg har ikke rodet med datoformatet, og synes ikke jeg har gjort noget
> andet end jeg plejer - jeg var slet ikke i nærheden af serveren, da det
> skete. Det skete vidst præcist ved midnat!

Jeg har fundet lidt mere information, ved at kigge lidt mere på de datoer
der er i databasen.

Det gamle datoformat ved GetDate() var:
30 Sep 2004 19:23:26
Det nye er:
Sep 30 2004 7:47PM

Et sted imellem de to tidspunkter begyndte problemet; det er dér jeg kan se
at datoformatet skiller.
Jeg var dog heller ikke logget ind på serveren på det tidspunkt.
Jeg har kigget i min event viewer (windows 2003), og dér er ikke nogen logs
til det tidspunkt.

Tak
Casper



Jens Gyldenkærne Cla~ (01-10-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-10-04 10:13

Casper Bang skrev:

> Der er sket noget MEGET underligt med min database.
> Fra midnat er SQL Server begyndt at bruge et helt andet datoformat end før!
> Dette giver problemer når jeg sammenligner datoer.

Du kan slippe for den slags problemer ved at bruge CONVERT til at
konvertere tekstinput til datoværdier.

Eksempel:

a) Uden angivelse af datoformat - usikker:

   select * from enheder where oprettet >= '1-5-04'

b) Med angivelse af datoformat - sikker og uafhængig af
serverindstillinger:

   select * from enheder where oprettet >= CONVERT(datetime, '1-5-04', 5)

Du kan se mulighederne med CONVERT i onlinehjælpen (BOL).

> Jeg kan ikke rigtigt forklare det nærmere, da jeg ikke selv fatter
> hvad der kan være sket.

En mulighed er at du (eller en serveradministrator) har lagt en
opdatering ind et sted i systemet.



> Hvor kan jeg se, og rette, datoformatet i SQL Server?

Jeg ved det ikke - men som nævnt vil jeg foreslå dig at lave dine
forespørgsler så du ikke er afhængig af et bestemt datoformat. Hvis det
kan ske én gang at datoformatet bliver ændret, kan det formentlig også
ske igen.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Casper Bang (01-10-2004)
Kommentar
Fra : Casper Bang


Dato : 01-10-04 15:11

> Du kan slippe for den slags problemer ved at bruge CONVERT til at
> konvertere tekstinput til datoværdier.

Hmm ja, det hjalp faktisk en del på det!
Nu kan jeg trække datoen ud af databasen, og få IIS til at acceptere den som
en dato.


>> Jeg kan ikke rigtigt forklare det nærmere, da jeg ikke selv fatter
>> hvad der kan være sket.
>
> En mulighed er at du (eller en serveradministrator) har lagt en
> opdatering ind et sted i systemet.

Jeg er den eneste med adgang til serveren - og mine security logs nævner
ikke noget om at nogen har logget ind på den på nogen måde...


>> Hvor kan jeg se, og rette, datoformatet i SQL Server?
>
> Jeg ved det ikke - men som nævnt vil jeg foreslå dig at lave dine
> forespørgsler så du ikke er afhængig af et bestemt datoformat. Hvis det
> kan ske én gang at datoformatet bliver ændret, kan det formentlig også
> ske igen.

Ja, det er nok en god idé... det er dog stadig ikke holdbart i længden at
databasen og ASP-siderne bruger forskelligt datoformat, så hvis der er nogen
der ved hvor det kan ændres, må i MEGET gerne sige til.

Jeg takker mange gange for hjælpen! Jeg er da nået så langt at jeg kan løse
problemet for nu.



Jens Gyldenkærne Cla~ (01-10-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-10-04 15:18

Casper Bang skrev:

> Ja, det er nok en god idé... det er dog stadig ikke holdbart i længden at
> databasen og ASP-siderne bruger forskelligt datoformat,

Jeg er gået helt væk fra at lave kode der afhænger af serverens
datoformater. Det kan fint lade sig gøre ved brug af funktioner som
CONVERT, DatePart, DateAdd etc.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Casper Bang (01-10-2004)
Kommentar
Fra : Casper Bang


Dato : 01-10-04 16:22

>> Ja, det er nok en god idé... det er dog stadig ikke holdbart i længden at
>> databasen og ASP-siderne bruger forskelligt datoformat,
>
> Jeg er gået helt væk fra at lave kode der afhænger af serverens
> datoformater. Det kan fint lade sig gøre ved brug af funktioner som
> CONVERT, DatePart, DateAdd etc.

Laver CONVERT da ikke bare datoformatet om, baseret på databasens settings?



Jens Gyldenkærne Cla~ (01-10-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-10-04 20:50

Casper Bang skrev:

> Laver CONVERT da ikke bare datoformatet om, baseret på
> databasens settings?

CONVERT konverterer til eller fra en dato i det interne datoformat
som databasen bruger. Skal man sammenligne en tekstværdi (fx hentet
fra en form) med et datofelt, laver man tekstværdien om til en
datoværdi ved hjælp af convert. Så er det principielt ligegyldigt
hvordan databasen vælger at repræsentere de to datoer - så længe
der bruges samme repræsentation går sammenligningen fint.

Hvis man omvendt har brug for at arbejde med datoværdier i kode
uden for databasen - fx asp-kode - kan man enten bruge CONVERT til
at få databasedatoen leveret i et format der passer til den
eksterne kode (eller ikke kan misforstås), eller også bruge YEAR,
MONTH og DAY-funktionerne til at levere de tre datodele adskilt og
samle dem i koden med en funktion som Dateserial (asp).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177516
Tips : 31968
Nyheder : 719565
Indlæg : 6408626
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste