Pisać instrukcje międzynarodowych Transact-SQL

Baz danych i aplikacji bazy danych, które używają Transact-SQL instrukcje staną się bardziej przenośne z jednego języka na drugi lub będzie obsługiwać wiele języków, jeśli są przestrzegane następujące wytyczne:

  • Zamień wszystkie zastosowania char, varchar, i text typy danych z nchar, nvarchar, i nvarchar(max).Dzięki temu nie trzeba wziąć pod uwagę strona kodowa problemy przy konwersji.Aby uzyskać więcej informacji, zobacz Praca z danymi Unicode i Programowania po stronie serwera w Unicode.

  • Podczas wykonywania miesiąc i dzień tygodnia porównań i operacji należy użyć części data liczbowe zamiast nazwy ciągów.Różne ustawienia języka zwracają różne nazwy miesięcy i dni tygodnia.Na przykład funkcja DATENAME(MONTH,GETDATE()) zwraca maja, kiedy język jest zestaw USAAngielski, zwraca Mai, gdy język jest zestaw niemieckiej i zwraca mai, gdy język jest zestaw na francuski.Zamiast tego należy użyć funkcja takich jak DATEPART, który używa numer miesiąca zamiast nazwy.Użyj nazwy DATEPART podczas tworzenia zestawów wyników ma być wyświetlany dla użytkownika, ponieważ nazwy data są często bardziej opisową, niż numeryczną reprezentację.Jednakże nie kodu wszelkie logiki, która zależy od nazwy wyświetlanej, od określonego języka.

  • Podczas określania dat w porównaniach lub wprowadzania do instrukcji INSERT lub UPDATE, używać stałych, które są interpretowane w taki sam sposób dla wszystkich ustawień języka:

    • ADO, OLE DB i aplikacji ODBC należy używać sygnatury czasowej, data i czas klauzul escape ODBC:

      { ts'yyyy-mm-ddhh**:mm:ss[.fff] '} such as: { ts'1998-09-24 10:02:20' }**

      { d'yyyy-mm-dd**'}** such as: { d'1998-09-24**'}**

      { t'hh:mm:ss'} such as: { t'10:02:20'}

    • Aplikacje używające innych interfejsów API lub Transact-SQL skrypty, procedury przechowywane i wyzwalacze, należy użyć nierozdzielone ciągi numeryczne.Na przykład yyyymmdd jako 19980924.

    • Aplikacje używające innych interfejsów API lub Transact-SQL skrypty, procedur przechowywanych i wyzwalaczy należy użyć instrukcja konwersji z parametrem jawne styl dla wszystkich konwersji między time, date, smalldate, datetime, datetime2, i datetimeoffset typów danych i ciąg znaków danych typów.Na przykład następująca instrukcja jest interpretowane w taki sam sposób dla wszystkich języków Data ustawienia formatu lub połączenia:

      SELECT *
      FROM AdventureWorks2008R2.Sales.SalesOrderHeader
      WHERE OrderDate = CONVERT(DATETIME, '20060719', 101)
      

      Aby uzyskać więcej informacji, zobacz CAST i CONVERT (Transact-SQL).

      Więcej informacji na temat przenośność data i czas formatów, zobacz Data i czas danych.