Writing International Transact-SQL Statements
Bazy danych i aplikacji baz danych, które używają Transact-SQL instrukcje stają się bardziej poręczny z jednego języka na inny lub obsługi wielu języków, jeśli są przestrzegane następujące wytyczne:
Zamień wszystkie zastosowania char, varchar, a text typy danych z nchar, nvarchar, a nvarchar(max). Dzięki temu nie trzeba wziąć pod uwagę kod problemy przy konwersji strona.Aby uzyskać więcej informacji zobacz Working with Unicode Data i Server-Side Programming with Unicode.
Podczas wykonywania miesiąc i dzień tygodnia porównań i operacji za pomocą części data liczbowe zamiast nazwy ciągów.Ustawienia w innym języku zwracają różne nazwy miesięcy i dni tygodnia.Na przykład DATENAME(MONTH,GETDATE()) zwraca maja, kiedy język jest zestaw USAKiedy język jest ustawiony na niemiecki, a następnie zwraca mai, jeżeli ustawiono język francuski, angielski, zwraca Mai.Zamiast tego należy użyć funkcja, takich jak używający numer miesiąca zamiast nazwy w parametrze DATEPART.Używanie nazw w parametrze DATEPART, podczas tworzenia zestawów wyników mają być wyświetlane dla użytkownika, ponieważ nazwy data są często ważniejszej niż numeryczną reprezentację.Jednak 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 o wprowadzenie danych do instrukcji INSERT lub UPDATE, za pomocą stałych, które są interpretowane w taki sam sposób, w przypadku wszystkich ustawień językowych:
Obiekty ADO i OLE DB oraz aplikacje ODBC, należy użyć sygnatury czasowej, data i czas klauzul anulowania 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 korzystające z innych interfejsów API, lub Transact-SQL skrypty, procedury przechowywane i wyzwalacze, należy użyć nierozdzielone ciągi numeryczne. Na przykład yyyymmdd jak 19980924.
Aplikacje korzystające z innych interfejsów API, lub Transact-SQL skrypty, procedur przechowywanych i wyzwalaczy należy użyć instrukcja CONVERT z parametrem jawne stylu dla wszystkich konwersji między time, date, smalldate, datetime, datetime2, a datetimeoffset typy danych oraz typy danych ciąg znaków. Na przykład poniższa instrukcja jest interpretowane w taki sam sposób, w przypadku wszystkich języków data ustawienia formatu lub połączenia:
SELECT * FROM AdventureWorks.Sales.SalesOrderHeader WHERE OrderDate = CONVERT(DATETIME, '19960719', 101)Aby uzyskać więcej informacji zobacz CAST and CONVERT (Transact-SQL).
Aby uzyskać więcej informacji na temat przenoszenia formatów data i godziny zobacz Using Date and Time Data.
See Also