SQL e localizzazione

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: , ,

One Response to “SQL e localizzazione”

  1. Sam Fisher scrive:

    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/