Hej!! Det finns API'er för att kontrollera de nationella inställningarna i Windows men en enklare lösning vore att låta VB sköta formatteringen. Det vet jag... Så här kan du ta reda på vilket språk SQL-Servern Fick lite mer info kring ämnet. Du kan köra en inbyggd lagrad procedur som heter sp_configure. Proceduren returnerar en rad där bl.a. fältet config_value innehåller ett språk id. För att köra den här proceduren anropar du: Om du använder ADOs command objekt och kör lagrade procedurer genom det med ett datum som inparameter så kommer det att fungera alltid oavsett vilken språkinställning SQL Server har. Då hanterar ADO det till dig. Om du däremot skriver din fråga direkt i ett recordset (vilket jag antar att du gör) kan du göra på ett av följande sätt för att vara säker på att ditt datum alltid räknas som samma datum, oavsett vilken språkinställning SQL Server har:Datum och SQL Server 7.0
Stötte på ett problem. Jag böt inställningarna på min dator till US English, då funkade helt plötsligt inte min applikation som jobbar mot en SQL Server på en dator med svenska inställningar. Vad jag har förstått så har med med DATEFORMAT att göra i SQL Servern. Dvs om man har svenska inställiningar på sin server väntar sig databasen datum med format ymd (år-månad-dag), us english mdy (månad-dag-år). När jag böt språk på min burk skickade jag datum med formeln mdy medan servern vill ha ymd.
Min fråga är om det går att kolla vilket språk servern använder så att när man skickar datum till den skickar det i rätt format??
Eller kanske finns det någon en annan bra lösning på problemet?
Tack för hjälpen!!
//KristofferSv: Datum och SQL Server 7.0
Genom att använda FormatDateTime funktionen i VB kommer den att formattera datumformatet enligt vad som angivits i de nationella inställningarna.
Det du gör är alltså att bygga upp ditt datum som en vanlig textsträng och kör den sedan genom FormatDateTime funktionen för att få den korrekta formatteringen tillbaka.Sv: Datum och SQL Server 7.0
Problemet är om SQL Servern står i USA med US English som inställning och jag sitter i Sverige med svensk inställning. När jag sedan försöker skicka med ett datum för att uppdatera databasen kommer det att bli fel pga olika datum formateringar. Vet man vad servern har för inställningar så är det ju inga problem, men vad händer om servern flyttas till Finland?? Då måste konvertera om till finskt datum format. Därför måste ju det bästa vara att ta reda på vad SQL Servern har för inställning och sedan konvertera datumet efter det.
Eller??
//KristofferSv: Datum och SQL Server 7.0
SELECT @@LANGUAGE, @@LANGID
Om du tillfälligt vill ändra språket för just din anslutning
SET LANGUAGE 'svenska'
MVH // JonteSv: Datum och SQL Server 7.0
sp_configure 'default language'
För att sedan kolla vad id't motsvarar för språk kör du följande SQL:
SELECT langid, name
FROM syslanguages
WHERE langid=?Sv: Datum och SQL Server 7.0
1. Skriv datum i formatet yyyymmdd.
Ex. SELECT * FROM Tabell WHERE Datum = '20001128'
Det kommer alltid att räknas som den 28 november år 2000, vilken språkinställning som än gäller.
2. Ange datumet på vilket sätt du vill och låt SQL Server konvertera från ditt format till 'sitt eget'.
Ex. SELECT * FROM Tabell WHERE Datum = CONVERT(DATETIME,'001128',112)
Den sista parametern (112) visar vilket sätt du skrivit ditt datum på, och betyder i det här fallet ISO Standard (yymmdd).