Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytický platformový systém (PDW)
SQL databáze v Microsoft Fabric
Databáze a databázové aplikace, které používají příkazy Transact-SQL, budou přenosnější z jednoho jazyka do jiného nebo budou podporovat více jazyků, pokud jsou dodrženy následující pokyny:
Počínaje SQL Serverem 2019 (15.x) a v Azure SQL Database použijte:
- Datové typy char, varchar, a varchar(max) s povolenou kolací UTF-8 a data se kódují pomocí UTF-8.
- Datové typy nchar, nvarchar a nvarchar(max) s kolací podporující doplňkové znaky (SC) a data se kódují pomocí UTF-16. Použití kolace jiného typu než SC vede ke kódování dat pomocí UCS-2.
Tím se zabrání problémům s konverzí znakové sady. Pro další úvahy viz Rozdíly mezi UTF-8 a UTF-16.
Až SQL Server 2017 (14.x), nahraďte všechna použití datových typů char, varchar a varchar(max)nchar, nvarchar a nvarchar(max). Pokud používáte kolaci s povolenými doplňkovými znaky (SC), data se kódují pomocí UTF-16. Použití kolace jiného typu než SC vede ke kódování dat pomocí UCS-2. Tím se zabrání problémům s převodem znakových stránek. Další informace naleznete v tématu Kolace a Podpora kódování Unicode.
Důležité
Textový datový typ je zastaralý a neměl by se používat v nové vývojové práci. Naplánujte převod textových dat na varchar(max).
Při provádění porovnání a operací mezi měsíci a dny v týdnu použijte místo řetězců názvů číselné části kalendářních dat. Různá jazyková nastavení vracejí různá jména pro měsíce a pracovní dny. Například, vrátí
DATENAME(MONTH,GETDATE())May, když je jazyk nastaven na americkou angličtinu, vrátíMai, když je jazyk nastaven na němčinu, a vrátímai, když je jazyk nastaven na francouzštinu. Místo názvu použijte funkci, například DATEPART , která místo názvu používá číslo měsíce. Názvy DATEPART použijte při vytváření sad výsledků, které se mají zobrazit uživateli, protože názvy kalendářních dat jsou často smysluplnější než číselné vyjádření. Nezakódujte ale žádnou logiku, která závisí na zobrazovaných názvech z určitého jazyka.Když zadáte data v porovnáních nebo pro vstup do příkazů INSERT nebo UPDATE, použijte konstanty, které jsou interpretovány stejným způsobem pro všechna jazyková nastavení:
Aplikace ADO, OLE DB a ODBC by měly používat časovou únikovou sekvenci ODBC pro razítko, datum a čas:
{ ts'yyyy-mm-ddhh:mm:ss [.fff] '} například: { ts'1998-09-24 10:02:20'}
{ d'yyyy-mm-dd'} například: { d'1998-09-24'}
{ t'hh:mm:ss'} například: { t'10:02:20'}
Aplikace, které používají jiná rozhraní API nebo Transact-SQL skripty, uložené procedury a triggery, by měly používat neoddělené číselné řetězce. Například yyyymmdd jako 19980924.
Aplikace, které používají jiná rozhraní API nebo Transact-SQL skripty, uložené procedury a triggery, by měly používat příkaz CONVERT se stylovým parametrem pro všechny převody mezi time, date, smalldate, datetime, datetime2, a datetimeoffset datovými typy a datovými typy znakových řetězců. Následující příkaz se například interpretuje stejným způsobem pro všechna nastavení připojení ve formátu jazyka nebo data:
SELECT * FROM AdventureWorks2022.Sales.SalesOrderHeader WHERE OrderDate = CONVERT(DATETIME, '20060719', 101)
Viz také
CAST a CONVERT (Transact-SQL)
DATEPART (Transact-SQL)
Podpora kolace a kódování Unicode