In questi giorni mi sono scontrato con un problema con 2 sql diversi… uno in italiano ed uno in inglese…questo portava ad un problema con la gestione delle date che venivano interpretate in modo diverso.
Spulciando in giro vi riporto i miei riscontri ( … dopo il salto )
La localizzazione del prodotto installato va a leggere la tabella syslanguages del database master ( sys nel 2005 )
Con questo script viene visualizzata la tabella contenente le varie localizzazioni.
Select *
From Master.dbo.syslanguages –-> MSDN ( in sql 2005 il dato viene salvato in sys.syslanguages )
Questo script di test ci fa vedere il comportamento differente di una query in base alla localizzazione
SET LANGUAGE us_english  –> Cambio lingua in inglese
SELECT CAST(‘2008-07-29′ AS datetime)
———————–
2008-07-29 00:00:00.000
SET LANGUAGE italian     –> Cambio lingua in italiano
SELECT CAST(‘2008-07-29′ AS datetime)
———————–
Changed language setting to Italiano.
Server: Msg 242, Level 16, State 3, Line 2
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
Con questo comando: sp_helplanguage us_english       è possibile verificare le impostazioni della lingua
Per cambiare il default language per la login di SQL è possibile utilizzare il comando sp_defaultlanguage ( Attenzione: tale comando verrà deprecato nelle prossime versioni di sql a favore di ALTER LOGIN )
Nelle query utilizzare il comando set dateformat { format | @format_var } ( MSDN )
Tags: sql 2000, sql 2005, sql inglese italiano confronto date
Mi permetto anche di segnalare questo interessantissimo articolo in merito alla localizzazione di SQL:
http://database.html.it/articoli/leggi/768/lavorare-con-le-date-in-sql-server/1/