Schreiben internationaler Transact-SQL-AnweisungenWrite International Transact-SQL Statements

Datenbanken und Datenbankanwendungen, die Transact-SQLTransact-SQL -Anweisungen verwenden, können leichter von einer Sprache in eine andere übertragen werden bzw. unterstützen mehrere Sprachen, wenn die folgenden Richtlinien eingehalten werden:Databases and database applications that use Transact-SQLTransact-SQL statements will become more portable from one language to another, or will support multiple languages, if the following guidelines are followed:

  • Ersetzen Sie alle Vorkommen von der char, varchar, und text Datentypen mit nchar, nvarchar, und nvarchar(max).Replace all uses of the char, varchar, and text data types with nchar, nvarchar, and nvarchar(max). Auf diese Weise müssen Sie keine Schwierigkeiten mit der Codepagekonvertierung berücksichtigen.By doing this, you do not have to consider code page conversion issues. Weitere Informationen finden Sie unter Collation and Unicode Support.For more information, see Collation and Unicode Support.

  • Wenn Vergleiche und Vorgänge in bestimmten Monaten oder an bestimmten Arbeitstagen ausgeführt werden, verwenden Sie die numerischen Datumseinheiten anstelle der Namenszeichenfolgen.When you perform month and day-of-week comparisons and operations, use the numeric date parts instead of the name strings. Unterschiedliche Spracheinstellungen geben verschiedene Namen für Monate und Arbeitstage zurück.Different language settings return different names for the months and weekdays. Beispielsweise gibt DATENAME(MONTH,GETDATE()) den Monat May zurück, wenn die Sprache auf US- Englisch festgelegt ist, beim Festlegen der Sprache Deutsch wird Mai und beim Festlegen der Sprache Französisch mai zurückgegeben.For example, DATENAME(MONTH,GETDATE()) returns May when the language is set to U.S. English, returns Mai when the language is set to German, and returns mai when the language is set to French. Verwenden Sie stattdessen eine Funktion wie DATEPART, die die Monatszahl anstelle des Namens verwendet.Instead, use a function such as DATEPART that uses the number of the month instead of the name. Verwenden Sie DATEPART-Namen, wenn Sie Resultsets erstellen, die für einen Benutzer angezeigt werden sollen, da Datumsbezeichnungen häufig aussagekräftiger sind als eine numerische Darstellung.Use the DATEPART names when you build result sets to be displayed to a user, because the date names are frequently more meaningful than a numeric representation. Kopieren Sie jedoch keine logischen Befehle, die davon abhängen, dass die angezeigten Namen aus einer bestimmten Sprache stammen.However, do not code any logic that depends on the displayed names being from a specific language.

  • Wenn Sie Datumseingaben in Vergleichen oder als Eingabe in INSERT- oder UPDATE-Anweisungen angeben, verwenden Sie Konstanten, die in allen Spracheinstellungen gleich interpretiert werden:When you specify dates in comparisons or for input to INSERT or UPDATE statements, use constants that are interpreted the same way for all language settings:

    • ADO-, OLE DB- und ODBC-Anwendungen sollten folgende ODBC-Timestamps und folgende ESCAPE-Klauseln für Datum und Zeit verwenden:ADO, OLE DB, and ODBC applications should use the ODBC timestamp, date, and time escape clauses of:

      { ts'yyyy-mm-ddhh:mm:ss[.fff] '} Beispiel: { ts'1998-09-24 10:02:20' }{ 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'}{ d' yyyy - mm - dd '} such as: { d'1998-09-24'}

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

    • Anwendungen, die andere APIs verwenden, oder Transact-SQLTransact-SQL -Skripts, gespeicherte Prozedure und Trigger sollten unstrukturierte Zeichenfolgen verwenden.Applications that use other APIs, or Transact-SQLTransact-SQL scripts, stored procedures, and triggers, should use the unseparated numeric strings. Zum Beispiel yyyymmdd für 19980924.For example, yyyymmdd as 19980924.

    • Anwendungen, die andere APIs oder Transact-SQLTransact-SQL -Skripts, gespeicherte Prozeduren und Trigger verwenden, sollten die CONVERT-Anweisung mit dem expliziten Parameter „style“ für alle Konvertierungen zwischen den Datentypen time, date, smalldate, datetime, datetime2und datetimeoffset sowie Zeichenfolgen-Datentypen verwenden.Applications that use other APIs, or Transact-SQLTransact-SQL scripts, stored procedures, and triggers should use the CONVERT statement with an explicit style parameter for all conversions between the time, date, smalldate, datetime, datetime2, and datetimeoffset data types and character string data types. Die folgende Anweisung wird beispielsweise für alle Verbindungseinstellungen für Sprach- oder Datumsformate gleich interpretiert:For example, the following statement is interpreted in the same way for all language or date format connection settings:

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

      Weitere Informationen finden Sie unter CAST und CONVERT (Transact-SQL).For more information, see CAST and CONVERT (Transact-SQL).