Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Microsoft Fabric'te
SQL analitiği uç noktasıMicrosoft Fabric'te
DepoMicrosoft Fabric'te SQL veritabanı
Bu işlevler bir veri türünün ifadesini başka bir veri türüne dönüştürür.
Sözdizimi
CAST sözdizimi:
CAST ( expression AS data_type [ ( length ) ] )
CONVERT sözdizimi:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Transact-SQL söz dizimi kuralları
Tartışmalar
ifade
Herhangi bir geçerli ifade.
data_type
Hedef veri türü. Buna xml, bigint ve sql_variant dahildir. Diğer ad veri türleri kullanılamaz.
uzunluk
Kullanıcının belirtilen uzunluğuna izin veren veri türleri için hedef veri türünün uzunluğunu belirten isteğe bağlı bir tamsayı. Varsayılan değer 30'dur.
üslup
Fonksiyonun CONVERTifadeyi nasıl çevirdiğini belirten tam sayı ifadesi. Stil değeri için NULL, NULL döner.
data_type aralığı belirler.
Dönüş türleri
data_type çevrilmiş ifadeyi döndürür.
Tarih ve saat stilleri
Tarih veya saat veri türü ifadesi için stil , aşağıdaki tabloda gösterilen değerlerden birine sahip olabilir. Diğer değerler ise olarak işleniyor.0 SQL Server 2012 (11.x) ile itibaren, tarih ve zaman tiplerinden datetimeoffset'e dönüştürülürken desteklenen tek stiller 0 veya 1'dır. Diğer tüm dönüştürme stilleri 9809 hatası döndürür.
Uyarı
SQL Server Database Engine, tarih formatını Arapça tarzda Kuveyt algoritması ile destekler.
| Yüzyıl olmadan (yy) 1 | Century (yyy) ile | Standart | Giriş/çıkış 3 |
|---|---|---|---|
| - |
0veya 1001,2 |
Datetime ve smalldatetime için varsayılan |
MMM dd yyyy hh:mmtt (tt ise AM veya PM) |
1 |
101 |
ABD | 1 = MM/dd/yy101 = MM/dd/yyyy |
2 |
102 |
Amerikan Ulusal Standartlar Enstitüsü (ANSI) | 2 = yy.MM.dd102 = yyyy.MM.dd |
3 |
103 |
İngiliz/Fransızca | 3 = dd/MM/yy103 = dd/MM/yyyy |
4 |
104 |
Almanca | 4 = dd.MM.yy104 = dd.MM.yyyy |
5 |
105 |
İtalyanca | 5 = dd-MM-yy105 = dd-MM-yyyy |
6 |
106
1 |
- | 6 = dd MMM yy106 = dd MMM yyyy |
7 |
107
1 |
- | 7 = MMM dd, yy107 = MMM dd, yyyy |
8 veya 24 |
108 |
- | HH:mm:ss |
| - |
9veya 1091,2 |
Varsayılan + milisaniye |
MMM dd yyyy hh:mm:ss:ffftt (tt ise AM veya PM) |
10 |
110 |
ABD | 10 = MM-dd-yy110 = MM-dd-yyyy |
11 |
111 |
Japan | 11 = yy/MM/dd111 = yyyy/MM/dd |
12 |
112 |
ISO | 12 = yyMMdd112 = yyyyMMdd |
| - |
13veya 1131,2 |
Avrupa varsayılan + milisaniye |
dd MMM yyyy HH:mm:ss:fff (24 saat) |
14 |
114 |
- |
HH:mm:ss:fff (24 saat) |
| - |
20 veya 1202 |
ODBC kurallı |
yyyy-MM-dd HH:mm:ss (24 saat) |
| - |
21 ya 25 da 1212 |
Saat, tarih, tarih saat2 ve datetimeoffset için ODBC kurallı (milisaniye ile) varsayılanı |
yyyy-MM-dd HH:mm:ss.fff (24 saat) |
22 |
- | ABD |
MM/dd/yy hh:mm:ss tt (tt ise AM veya PM) |
| - | 23 |
ISO8601 | yyyy-MM-dd |
| - |
126
4 |
ISO8601 |
yyyy-MM-ddTHH:mm:ss.fff (boşluk yok) 6 |
| - |
127
8, 9 |
Z saat dilimiyle ISO8601 |
yyyy-MM-ddTHH:mm:ss.fffZ (boşluk yok) 6 |
| - |
130
1,2 |
Hicri 5 |
dd MMMM yyyy hh:mm:ss:ffftt
7 |
| - |
131
2 |
Hicri 5 | dd/MM/yyyy hh:mm:ss:ffftt |
1 Bu stil değerleri belirsiz sonuçlar döndürür. Tüm () (yyyüzyıl olmadan) stillerini ve () (yyyycentury) stillerinin bir alt kümesini içerir.
2 Varsayılan değerler (0 veya 100, 9 , 13109ya , , veya 113, 2320 , 120, ve 21 veya 25 veya 121) her zaman yüzyılı ().yyyy
Önemli
Varsayılan olarak, SQL Server Database Engine 2049 kesim yılına göre iki haneli yılları yorumlar. Bu, Database Engine'in iki haneli 49 yılı 2049, iki haneli 50 yılı ise 1950 olarak yorumladığı anlamına gelir. Otomasyon nesnelerini temel alan uygulamalar da dahil olmak üzere birçok istemci uygulaması 2030'un kesme yılını kullanır. Database Engine, Database Engine tarafından kullanılan cutoff yılını değiştirmek için iki haneli bir yıl kesme yılı yapılandırma seçeneği sunar. Bu, tarihlerin tutarlı bir şekilde işlenmesini sağlar. Dört basamaklı yıl belirtmenizi öneririz.
3Datetime'a dönüştürdüğünüzde giriş; karakter verilerine dönüştürdüğünüzde çıkış.
4 XML kullanımı için tasarlanmıştır. datetime veya smalldatetime'dan karakter verilerine dönüştürme için çıkış biçimi için önceki tabloya bakın.
5 Hicri, çeşitli varyasyonlara sahip bir takvim sistemidir. Database Engine, Kuveyt algoritmasını kullanır.
6 Milisaniye (fff) 0 değeri için milisaniye ondalık kesir değeri görüntülenmez. Örneğin, değer 2022-11-07T18:26:20.000 olarak 2022-11-07T18:26:20görüntülenir.
7 Bu stilde, MMMM tam ay adının çok belirteçli Hicri Unicode gösterimini temsil eder. Bu değer, SSMS'nin varsayılan ABD yüklemesinde doğru şekilde işlenmez.
8 Yalnızca karakter verilerinden datetime veya smalldatetime'a türerken desteklenir.
Datetime veya smalldatetime veri türlerine yalnızca tarih veya saat bileşenlerini temsil eden karakter verileri yayınlanırken, belirtilmeyen saat bileşeni olarak 00:00:00.000ayarlanır ve belirtilmeyen tarih bileşeni olarak 1900-01-01ayarlanır.
9 Saat dilimi bilgisi olan XML tarih-saat değerlerini, saat dizimi olmayan Database Engine tarih-saat değerleriyle eşleştirmeyi kolaylaştırmak için isteğe bağlı saat dilimi göstergesini Z kullanın.
Z UTC-0 saat dilimini gösterir.
HH:mm Veya + yönündeki - uzaklık, diğer saat dilimlerini gösterir. Örneğin: 2022-12-12T23:45:12-08:00.
Smalldatetime karakter verilerine dönüştürülürken, saniye veya milisaniye içeren stiller bu konumlarda sıfırları gösterir. datetime veya smalldatetime değerlerinden dönüştürürken, istenmeyen tarih bölümlerinin kesilmesi için uygun karakter veya varchar veri türü uzunluğunu kullanın.
Karakter verilerini datetimeoffset'e dönüştürürken, saat içeren bir stil kullanıldığında, sonuca saat dilimi uzaklığı eklenir.
float ve gerçek stiller
Kayan veya gerçekifade için stil aşağıdaki tabloda gösterilen değerlerden birine sahip olabilir. Diğer değerler ise olarak işleniyor.0
| Değer | Çıktı |
|---|---|
0 (varsayılan) |
En fazla 6 basamak. Uygun olduğunda bilimsel gösterimi kullanın. |
1 |
Her zaman 8 basamak. Bilimsel gösterimi her zaman kullanın. |
2 |
Her zaman 16 basamak. Bilimsel gösterimi her zaman kullanın. |
3 |
Her zaman 17 basamak. Kayıpsız dönüştürme için kullanın. Bu stilde, her ayrı kayan veya gerçek değerin ayrı bir karakter dizesine dönüştürülmesi garanti edilir. Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri ve Azure SQL Veritabanı. |
126, 128, 129 |
Eski nedenlerle dahil. Bu değerleri yeni geliştirme için kullanmayın. |
para ve smallmoney stilleri
Bir money veya smallmoneyifadesi için, stil aşağıdaki tabloda gösterilen değerlerden birine sahip olabilir. Diğer değerler ise olarak işleniyor.0
| Değer | Çıktı |
|---|---|
0 (varsayılan) |
Ondalık noktasının solundaki her üç basamakta virgül ve ondalık noktasının sağındaki iki basamak yok Örnek: 4235.98. |
1 |
Ondalık noktasının solundaki her üç basamakta bir virgül ve ondalık noktasının sağındaki iki basamak Örnek: 3.510,92. |
2 |
Ondalık noktasının solundaki her üç basamakta virgül ve ondalık noktasının sağındaki dört basamak yok Örnek: 4235.9819. |
126 |
Char(n) veya varchar(n)'ye dönüştürüldüğünde tarza 2eşdeğer |
xml stilleri
Bir xmlifadesi için, stil aşağıdaki tabloda gösterilen değerlerden birine sahip olabilir. Diğer değerler ise olarak işleniyor.0
| Değer | Çıktı |
|---|---|
0 (varsayılan) |
Önemsiz boşlukları atan ve iç DTD alt kümesine izin verilmeyen varsayılan ayrıştırma davranışını kullanın. Not:xml veri tipine dönüştürülürken, Database Engine önemsiz boşlukları XML 1.0'dan farklı şekilde işler. Daha fazla bilgi için, bkz. Create instances of XML verisi. |
1 |
Önemsiz boşlukları koruyun. Bu stil ayarı, varsayılan xml:space işlemeyi davranışıyla xml:space="preserve"eşleşecek şekilde ayarlar. |
2 |
Sınırlı iç DTD alt kümesi işlemeyi etkinleştirin. Etkinleştirilirse, sunucu, bir iç DTD alt kümesinde sağlanan aşağıdaki bilgileri kullanarak doğrulanmayan ayrıştırma işlemleri gerçekleştirebilir. - Öznitelikler için varsayılanlar uygulanır - İç varlık başvuruları çözümlenir ve genişletilir - DTD içerik modeli, sağlamlık açısından denetlenir Ayrıştırıcı dış DTD alt kümelerini yoksayar. Ayrıca, bağımsız özniteliğin bir yes veya no değeri olup olmadığını görmek için XML bildirmesini değerlendirmez. Bunun yerine, XML örneğini tek başına bir belge olarak ayrıştırıyor. |
3 |
Önemsiz boşlukları koruyun ve sınırlı iç DTD alt kümesi işlemeyi etkinleştirin. |
İkili stiller
İkili(n), karakter(n), varbinary(n)veya varchar(n)ifadesi için, stil aşağıdaki tabloda gösterilen değerlerden birine sahip olabilir. Tabloda listelenmeyen stil değerleri hata döndürür.
| Değer | Çıktı |
|---|---|
0 (varsayılan) |
ASCII karakterlerini ikili baytlara veya ikili baytları ASCII karakterlerine çevirir. Her karakter veya bayt 1:1'e dönüştürülür. İkili data_type için, karakterler 0x sonucun soluna eklenir. |
1, 2 |
İkili data_type için ifade bir karakter ifadesi olmalıdır.
İfadeninçift sayıda onaltılık rakamı olmalıdır (0, 1, 2, E376859AFDa4CB, ). bcdef
Eğer stil ayarlıysa1, ifadenin 0x ilk iki karakteri olmalıdır. İfade tek sayıda karakter içeriyorsa veya karakterlerden biri geçersizse bir hata oluşur.Dönüştürülen ifadenin uzunluğu data_type uzunluğunu aşarsa, sonuç sağ kesilmiş olur. Dönüştürülen sonuçtan daha büyük olan data_typeuzunluğu sabittir ve sonucun sağındaki sıfırlar eklenir. Tür karakteri data_type ikili ifade gerektirir. Her ikili karakter iki onaltılık karaktere dönüştürülür. Dönüştürülen ifadenin uzunluğunun data_type uzunluğunu aştığını varsayalım. Bu durumda kesilir. Sabit boyutlu karakter türü data_type, dönüştürülen sonucun uzunluğu data_type uzunluğundan küçükse, çift sayıda onaltılık basamak tutmak için dönüştürülen ifadenin sağındaki boşluklar eklenir. Karakterler 0x , stil2 açısından dönüştürülmüş sonucun soluna eklenmiyor. |
Örtük dönüştürmeler
Örtük dönüştürmeler, işlevin veya işlevin CAST belirtimini CONVERT gerektirmez. Açık dönüştürmeler işlevin veya işlevin CAST belirtimini CONVERT gerektirir. Aşağıdaki illüstrasyon, Database Engine sistem tarafından sağlanan veri tipleri için izin verilen tüm açık ve örtük veri tipi dönüşümlerini göstermektedir. Bunlar arasında bigint, sql_variant, xml, hiyerarşi,coğrafya, geometri, json ve vektör bulunur.
json ve vector veri türleri yalnızca SQL Server 2025 (17.x), Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL database in Microsoft Fabric'te mevcuttur.
sql_variant veri tipinden atamada örtük bir dönüşüm yok, ama sql_variant'ye örtük dönüşüm var.
Yukarıdaki grafik, Database Engine'de izin verilen tüm açık ve örtük dönüşümleri gösterir, ancak dönüşümün veri türü, gerçekleştirilen işleme bağlıdır:
- Açık dönüştürmeler için, sonuçta elde edilen veri türünü deyiminin kendisi belirler.
- Örtük dönüştürmeler için, bir değişkenin değerini ayarlama veya sütuna değer ekleme gibi atama deyimleri, değişken bildirimi veya sütun tanımı tarafından tanımlanan veri türüyle sonuçlanır.
- Karşılaştırma işleçleri veya diğer ifadeler için, sonuçta elde edilen veri türü veri türü önceliği kurallarına bağlıdır.
Bazı veri türleri için sonuç, veri türünün nasıl ilan edildiğine bağlıdır:
-
ondalık ve sayısal: Database Engine, hassasiyet ve ölçek kombinasyonlarını farklı bir veri türü olarak ele alır. Aralarındaki dönüşüm örtük olabilir. Hedef ölçekten daha fazla ondalık basamayı içeren bir değer, hatasız olarak yumallaştırılır. Hedef hassasiyeti için çok büyük bir değer, 8115 hatasına neden olur, ancak
ARITHABORTveANSI_WARNINGSikisiOFFde ise; o zaman sonuç olurNULL. - Varchar(max), nvarchar(max) ve varbinary(max)diye sql_variant'ye dönüştüremezsiniz.
- Farklı CLR kullanıcı tanımlı tipler arasında dönüşüm yasaktır.
- Tiplenmemiş xml ile tiplenmiş xml arasında, ayrıca aynı XML şema koleksiyonunu ve aynı
DOCUMENTveyaCONTENTyüzeyi kullanan tiplenmiş xml değerleri arasında örtük dönüşüm desteklenir. - Farklı XML şema koleksiyonları arasında veya farklı
DOCUMENTveCONTENTyüzeyler arasında dönüşüm açıkça yapılmalıdır. CLR kullanıcı tanımlı tip ile tiplenmiş xml arasında dönüşüm yasaktır. - Vektör değerleri arasında dönüşüm yalnızca boyutlar ve temel tipi (float32 veya float16) aynı olduğunda izin verilir.
Grafikte izin verilen bir dönüşüm yine de belirli bir değer için başarısız olabilir; örneğin geçerli olmayan bir dizi ya da farklı boyutlu bir vektör.
Görüntü, ntext, metin, xml, coğrafya, geometri, json ve vektör veri türlerinin değerleri, her iki değerin de aynı veri tipine sahip olsa bile eşit (=) operatörüyle karşılaştırılamaz.
Tavsiye
Veri türü önceliğini dönüştürmelerdeki etkileri hakkında pratik bir örnek bu bölümün devamında görülebilir.
datetimeoffset ile char, nchar, nvarchar ve varchar karakter türleri arasında dönüştürme yaptığınızda, dönüştürülen saat dilimi uzaklık bölümü her zaman hem hem HHde mm için çift basamaklı olmalıdır. Örneğin, -08:00.
nchar ve nvarchar veri tipleri, Unicode verilerini UTF-16 kodlamasında saklar; bu kodlama her zaman çift sayıda bayt kullanır.
Nchar veya nvarchar'danikili veya varbinary dönüştürürken dikkatli olun. Örneğin, aşağıdaki dönüşüm 'nin onaltılık değerini 41döndürmez. Onaltılık bir değer döndürür:4100
SELECT CAST (CAST (0x41 AS NVARCHAR) AS VARBINARY);
Daha fazla bilgi için bkz. Harmanlama ve Unicode desteği.
Büyük değerli veri türleri
Büyük değerli veri türleri, özellikle nvarchar, varbinary ve varchar veri türleri gibi küçük karşılıklarıyla aynı örtük ve açık dönüştürme davranışına sahiptir. Ancak aşağıdaki yönergeleri göz önünde bulundurun:
- Görüntüdenvarbinary(max)'e dönüştürme ve tam tersi, metin ile varchar(max), ntext ve nvarchar(max)arasındaki dönüştürmeler gibi örtük dönüştürme olarak çalışır.
- Varchar(max) gibi büyük değerli veri türlerinden varchar gibi daha küçük bir karşılık gelen veri türüne dönüştürme örtük bir dönüştürmedir, ancak büyük değerin boyutu daha küçük veri türünün belirtilen uzunluğunu aşarsa kesme gerçekleşir.
- nvarchar, varbinary veya varchar'dan karşılık gelen büyük değerli veri türlerine dönüştürme örtük olarak gerçekleşir.
- sql_variant veri türünden büyük değerli veri türlerine dönüştürme açık bir dönüştürmedir.
- Büyük değerli veri türleri sql_variant veri türüne dönüştürülemez.
XML veri tipinden dönüşüm hakkında daha fazla bilgi için bkz. Oluştur XML veri örnekleri.
xml veri türü
Xml veri türünü bir dizeye veya ikili veri türüne açıkça veya örtük olarak yayınladığınızda, xml veri türünün içeriği tanımlı bir kural kümesine göre serileştirilir. Bu kurallar hakkında bilgi için bkz. XML verilerinin serializasyonunu tanımla. Diğer veri tiplerinden xml veri tipine dönüşüm hakkında bilgi için bkz . Oluştur XML veri örnekleri.
metin ve görüntü veri türleri
Metin ve görüntü veri türleri otomatik veri türü dönüştürmeyi desteklemez. Metin verilerini açıkça karakter verilerine, görüntü verilerini de ikili veya varbinary'ye dönüştürebilirsiniz, ancak uzunluk üst sınırı 8000 bayttır. Yanlış bir dönüştürme denerseniz, örneğin harfler içeren bir karakter ifadesini int'ye dönüştürmeye çalışırsanız, Database Engine hata mesajı döner.
Çıkış harmanlaması
veya CAST işlevleri bir karakter dizesi çıktısı CONVERT aldığında ve bir karakter dizesi girişi aldığında, çıkış girişle aynı harmanlama ve harmanlama etiketine sahiptir. Giriş bir karakter dizesi değilse, çıkışta veritabanının varsayılan harmanlaması ve coercible-default harmanlama etiketi bulunur. Daha fazla bilgi için Harmanlama önceliği'e bakın.
Çıktıya farklı bir derleme atamak için, bu maddeyi COLLATE veya CAST fonksiyonunun CONVERT sonuç ifadesine uygulayın. Örneğin:
SELECT CAST ('abc' AS VARCHAR (5)) COLLATE French_CS_AS;
Kesme ve yuvarlama sonuçları
Karakter veya ikili ifadeleri (ikili, karakter, nchar, nvarchar, varbinary veya varchar) farklı bir veri türündeki bir ifadeye dönüştürürken, dönüştürme işlemi çıkış verilerini kesebilir, yalnızca çıkış verilerini kısmen görüntüleyebilir veya hata döndürebilir. Bu durumlar, sonuç gösterilemez kadar kısa olduğunda ortaya çıkar. İkili, karakter, nchar, nvarchar, varbinary veya varchar dönüştürmeleri, aşağıdaki tabloda gösterilen dönüştürmeler dışında kesilir.
| Veri türünden | Veri türüne | Sonuç |
|---|---|---|
| int, smallint veya tinyint |
Char varchar |
Görüntülenemeyecek kadar kısa |
|
nchar nvarchar |
Hata 1 | |
| money, smallmoney, sayısal, ondalık, kayan veya gerçek |
Char varchar |
Hata 1 |
|
nchar nvarchar |
Hata 1 |
1 Sonuç uzunluğu görüntülenemeyecek kadar kısa olduğundan hata döndürüldü.
SQL Server Database Engine, yalnızca dönüş dönüşümlerinin, yani bir veri tipini orijinal veri tipinden geri dönüştüren dönüşümlerin, versiyondan versiyona aynı değerleri vermesini garanti eder. Aşağıdaki örnekte böyle bir gidiş dönüş dönüştürme gösterilmektedir:
DECLARE @myval AS DECIMAL (5, 2);
SET @myval = 193.57;
SELECT CAST (CAST (@myval AS VARBINARY (20)) AS DECIMAL (10, 5));
-- Or, using CONVERT
SELECT CONVERT (DECIMAL (10, 5), CONVERT (VARBINARY (20), @myval));
GO
Uyarı
İkili değerler oluşturmayın ve sonra bunları sayısal veri türü kategorisinin veri türüne dönüştürün. Database Engine, ondalık veya sayısal veri tipi dönüşümün, ikili biçime dönüşümün, SQL Server sürümleri arasında aynı olduğunu garanti etmez.
Aşağıdaki örnekte, görüntülenemeyecek kadar küçük bir sonuç ifadesi gösterilmektedir.
USE AdventureWorks2025;
GO
SELECT p.FirstName,
p.LastName,
SUBSTRING(p.Title, 1, 25) AS Title,
CAST (e.SickLeaveHours AS CHAR (1)) AS [Sick Leave]
FROM HumanResources.Employee AS e
INNER JOIN Person.Person AS p
ON e.BusinessEntityID = p.BusinessEntityID
WHERE NOT e.BusinessEntityID > 5;
GO
Sonuç kümesi aşağıdadır.
FirstName LastName Title Sick Leave
--------- ------------- ------- --------`
Ken Sanchez NULL *
Terri Duffy NULL *
Roberto Tamburello NULL *
Rob Walters NULL *
Gail Erickson Ms. *
Ondalık basamaklarda farklı veri türlerini dönüştürdüğünüzde, Database Engine bazen kısaltılmış bir sonuç değeri döndürür, bazen de yuvarlatılmış bir değer döndürür. Bu tabloda davranış gösterilir.
| Kaynak | İçin | Davranış |
|---|---|---|
| Sayısal | Sayısal | Yuvarlak |
| Sayısal | Int | Kısalt |
| Sayısal | para | Yuvarlak |
| para | Int | Yuvarlak |
| para | Sayısal | Yuvarlak |
| yüzmek | Int | Kısalt |
| yüzmek | Sayısal | Yuvarlak 1 |
| yüzmek | tarih ve saat | Yuvarlak |
| tarih ve saat | Int | Yuvarlak |
1 Bilimsel gösterim kullanan kayandeğerlerin ondalık veya sayısal olarak dönüştürülmesi yalnızca 17 basamaklı duyarlık değerleriyle sınırlıdır. Duyarlık değeri 17'den yüksek olan tüm değerler sıfıra yuvarlar.
Örneğin, 10.6496 ve -10.6496 değerleri int veya sayısal tiplere dönüşüm sırasında kısaltılabilir veya yuvarlanabilir:
SELECT CAST (10.6496 AS INT) AS trunc1,
CAST (-10.6496 AS INT) AS trunc2,
CAST (10.6496 AS NUMERIC) AS round1,
CAST (-10.6496 AS NUMERIC) AS round2;
Sorgunun sonuçları aşağıdaki tabloda gösterilmiştir:
| trunc1 | trunc2 | yuvarlak1 | yuvarlak2 |
|---|---|---|---|
| 10 | -10 | 11 | -11 |
Hedef veri türünün kaynak veri türünden daha az ondalık basamak bulunduğu veri türleri dönüştürülürken, değer yuvarlanır. Örneğin, bu dönüştürme döndürür $10.3497:
SELECT CAST (10.3496847 AS MONEY);
Database Engine, sayısal olmayan char, nchar, nvarchar veya varchar verilerini ondalık, float, int, sayısal olarak dönüştürürken hata mesajı döndürür. Database Engine ayrıca boş bir dizi ( ) sayısal veya ondalık haline dönüştürüldüğünde de hata döndürür.
Belirli tarih saat dönüştürmeleri belirsizdir
Dizeden tarihe saat dönüştürmesinin belirleyici olmadığı stiller aşağıdaki gibidir:
-
1 altındaki
100tüm stiller 106107109113130
1 Stiller 20 hariç ve 21
Daha fazla bilgi için bkz. Değişmez tarih dizelerini DATE değerlerine dönüştürme.
Ek karakterler (vekil çiftler)
SQL Server 2012'den (11.x) başlayarak, tamamlayıcı karakter (SC) harmanlamaları kullanıldığında, CASTnchar veya nvarchar'dan daha küçük uzunlukta bir nchar veya nvarchar türüne yapılan bir işlem vekil çiftin içinde kesilmez. Bunun yerine, işlem tamamlayıcı karakterden önce kesilir. Örneğin, aşağıdaki kod parçası yalnızca @xöğesini tutarak ayrılırab. Ek karakteri tutmak için yeterli alan yok.
DECLARE @x AS NVARCHAR (10) = 'ab' + NCHAR(0x10000);
SELECT CAST (@x AS NVARCHAR (3));
SC harmanlamaları kullanılırken , davranışı CONVERTile benzerdir CAST. Daha fazla bilgi için bkz. Harmanlama ve Unicode Desteği - Ek Karakterler.
Uyumluluk desteği
SQL Server'ın önceki sürümlerinde, zaman ve tarih saati2 veri tipleri 121için varsayılan stil CAST ve CONVERT işlemler , hesaplanan bir sütun ifadesinde her iki tip kullanıldığı hariç. Hesaplanan sütunlar için varsayılan stil 'dir.0 Bu davranış, hesaplanan sütunlar oluşturulduğunda, otomatik parametreleştirme içeren sorgularda veya kısıtlama tanımlarında kullanıldığında onları etkiler.
Uyumluluk seviyesi110 ve daha üzerinde, CASTzaman ve datetime2 veri türlerindeki ve CONVERT işlemler her zaman varsayılan stil olarak kullanılır121. Bir sorgu eski davranışa dayanıyorsa, , üzerinde daha düşük bir uyumluluk seviyesi 110kullanın veya etkilenen sorguda stili 0 açıkça belirtin.
| Uyumluluk düzeyi değeri | ve CASTCONVERT için varsayılan stil |
Hesaplanan sütun için varsayılan stil |
|---|---|---|
< 110 |
121 |
0 |
>= 110 |
121 |
121 |
1 Hesaplanan sütunlar dışında
Veritabanını uyumluluk 110 seviyesine ve daha yüksek seviyelere yükseltmek, diskte saklanan kullanıcı verilerini değiştirmez. Bu verileri uygun şekilde el ile düzeltmeniz gerekir. Örneğin, SELECT INTO yukarıda açıklanan hesaplanmış bir sütun ifadesi içeren bir kaynaktan bir tablo oluşturuyorduysanız, veri (stil 0kullanılarak) hesaplanan sütun tanımı yerine depolanır. Bu verileri manuel olarak güncellemelisiniz ve stil 121ile eşleştirmelisiniz.
Örnekler
Bu makaledeki kod örnekleri, Azure Data SQL Samples Repository GitHub deposundan indirebileceğiniz , AdventureWorksDW2025, veya AdventureWorksLT2025 örnek veritabanını kullanırAdventureWorks2025.
A. Hem CAST hem de CONVERT kullanma
Bu örnekler, liste fiyatının ilk basamasına sahip 3 olan ve değerlerini ListPrice dönüştüren ürünler için ürünün adını alır.
CAST kullanın:
USE AdventureWorks2025;
GO
SELECT SUBSTRING(Name, 1, 30) AS ProductName,
ListPrice
FROM Production.Product
WHERE CAST (ListPrice AS INT) LIKE '33%';
GO
CONVERT kullanın:
USE AdventureWorks2025;
GO
SELECT SUBSTRING(Name, 1, 30) AS ProductName,
ListPrice
FROM Production.Product
WHERE CONVERT (INT, ListPrice) LIKE '33%';
GO
Sonuç kümesi aşağıdadır. Örnek sonuç kümesi hem hem CASTde CONVERT için aynıdır.
ProductName ListPrice
------------------------------ ---------------------
LL Road Frame - Black, 58 337.22
LL Road Frame - Black, 60 337.22
LL Road Frame - Black, 62 337.22
LL Road Frame - Red, 44 337.22
LL Road Frame - Red, 48 337.22
LL Road Frame - Red, 52 337.22
LL Road Frame - Red, 58 337.22
LL Road Frame - Red, 60 337.22
LL Road Frame - Red, 62 337.22
LL Road Frame - Black, 44 337.22
LL Road Frame - Black, 48 337.22
LL Road Frame - Black, 52 337.22
Mountain-100 Black, 38 3374.99
Mountain-100 Black, 42 3374.99
Mountain-100 Black, 44 3374.99
Mountain-100 Black, 48 3374.99
HL Road Front Wheel 330.06
LL Touring Frame - Yellow, 62 333.42
LL Touring Frame - Blue, 50 333.42
LL Touring Frame - Blue, 54 333.42
LL Touring Frame - Blue, 58 333.42
LL Touring Frame - Blue, 62 333.42
LL Touring Frame - Yellow, 44 333.42
LL Touring Frame - Yellow, 50 333.42
LL Touring Frame - Yellow, 54 333.42
LL Touring Frame - Yellow, 58 333.42
LL Touring Frame - Blue, 44 333.42
HL Road Tire 32.60
B. Aritmetik işleçlerle CAST kullanma
Bu örnek, yıllık toplam satışları () komisyon yüzdesine (Computed) bölerek tek bir sütun hesaplaması (SalesYTDCommissionPCT) hesaplar. Bu değer en yakın tamsayıya yuvarlanıp bir CASTint veri türüne yuvarlanir.
USE AdventureWorks2025;
GO
SELECT CAST (ROUND(SalesYTD / CommissionPCT, 0) AS INT) AS Computed
FROM Sales.SalesPerson
WHERE CommissionPCT != 0;
GO
Sonuç kümesi aşağıdadır.
Computed
------
379753754
346698349
257144242
176493899
281101272
0
301872549
212623750
298948202
250784119
239246890
101664220
124511336
97688107
C. Birleştirmek için CAST kullanma
Bu örnek, kullanarakcharacter CASTolmayan ifadeleri birleştirir. Veritabanını kullanır AdventureWorksDW2025 .
SELECT 'The list price is ' + CAST (ListPrice AS VARCHAR (12)) AS ListPrice
FROM dbo.DimProduct
WHERE ListPrice BETWEEN 350.00 AND 400.00;
Sonuç kümesi aşağıdadır.
ListPrice
------------------------
The list price is 357.06
The list price is 364.09
The list price is 364.09
The list price is 364.09
The list price is 364.09
D. Daha okunabilir metin oluşturmak için CAST kullanma
Bu örnek, listede sütunu char(10) sütununa dönüştürmek Name için kullanılır CASTSELECT. Veritabanını kullanır AdventureWorksDW2025 .
SELECT DISTINCT CAST (EnglishProductName AS CHAR (10)) AS Name,
ListPrice
FROM dbo.DimProduct
WHERE EnglishProductName LIKE 'Long-Sleeve Logo Jersey, M';
GO
Sonuç kümesi aşağıdadır.
Name ListPrice
---------- ---------
Long-Sleev 31.2437
Long-Sleev 32.4935
Long-Sleev 49.99
E. LIKE yan tümcesiyle CAST kullanma
Bu örnek sütun money değerlerini SalesYTD veri türüne ve sonra char(20) veri türüne dönüştürürLIKE, böylece yan tümcesi bunu kullanabilir.
USE AdventureWorks2025;
GO
SELECT p.FirstName,
p.LastName,
s.SalesYTD,
s.BusinessEntityID
FROM Person.Person AS p
INNER JOIN Sales.SalesPerson AS s
ON p.BusinessEntityID = s.BusinessEntityID
WHERE CAST (CAST (s.SalesYTD AS INT) AS CHAR (20)) LIKE '2%';
GO
Sonuç kümesi aşağıdadır.
FirstName LastName SalesYTD BusinessEntityID
---------------- ------------------- ---------------- -------------
Tsvi Reiter 2811012.7151 279
Syed Abbas 219088.8836 288
Rachel Valdez 2241204.0424 289
F. Türü yazılan XML ile CONVERT veya CAST kullanma
Bu örnekler, xml veri tipi ve sütunları (SQL Server) kullanılarak veriyi tiplenmiş XML'e dönüştürmek için CONVERT kullanıldığını gösterir.
Bu örnek boşluk, metin ve işaretleme içeren bir dizeyi yazılan XML'e dönüştürür ve tüm önemsiz boşlukları (düğümler arasındaki sınır boşluğu) kaldırır:
SELECT CONVERT (XML, '<root><child/></root>');
Bu örnek, boşluk, metin ve işaretleme içeren benzer bir dizeyi yazılan XML'e dönüştürür ve önemsiz boşluk (düğümler arasındaki sınır boşluğu) korur:
SELECT CONVERT (XML, '<root> <child/> </root>', 1);
Bu örnek boşluk, metin ve işaretleme içeren bir dizeyi yazılan XML'ye aktarır:
SELECT CAST ('<Name><FName>Carol</FName><LName>Elliot</LName></Name>' AS XML);
Daha fazla örnek için XML veri örnekleri yarat bölümüne bakınız.
G. TARIH saat verileriyle CAST ve CONVERT kullanma
Değerlerden GETDATE() başlayarak, bu örnek geçerli tarih ve saati görüntüler, geçerli tarih ve saati karakter veri türüyle değiştirmek için kullanır CAST ve ardından tarih ve saati CONVERT biçimde görüntülemek için kullanırISO 8601.
SELECT GETDATE() AS UnconvertedDateTime,
CAST (GETDATE() AS NVARCHAR (30)) AS UsingCast,
CONVERT (NVARCHAR (30), GETDATE(), 126) AS UsingConvertTo_ISO8601;
GO
Sonuç kümesi aşağıdadır.
UnconvertedDateTime UsingCast UsingConvertTo_ISO8601
----------------------- ---------------------- ------------------------------
2022-04-18 09:58:04.570 Apr 18 2022 9:58AM 2022-04-18T09:58:04.570
Bu örnek, önceki örneğin yaklaşık tersidir. Bu örnekte bir tarih ve saat karakter verileri olarak görüntülenir, karakter verilerini CAST veri türüne dönüştürmek için kullanılır ve ardından karakter verilerini CONVERT veri türüne değiştirmek için kullanılır.
SELECT '2006-04-25T15:50:59.997' AS UnconvertedText,
CAST ('2006-04-25T15:50:59.997' AS DATETIME) AS UsingCast,
CONVERT (DATETIME, '2006-04-25T15:50:59.997', 126) AS UsingConvertFrom_ISO8601;
GO
Sonuç kümesi aşağıdadır.
UnconvertedText UsingCast UsingConvertFrom_ISO8601
----------------------- ----------------------- ------------------------
2006-04-25T15:50:59.997 2006-04-25 15:50:59.997 2006-04-25 15:50:59.997
H. İkili ve karakter verileriyle CONVERT kullanma
Bu örnekler, farklı stiller kullanarak ikili ve karakter verisi dönüştürmenin sonuçlarını gösterir.
--Convert the binary value 0x4E616d65 to a character value.
SELECT CONVERT (CHAR (8), 0x4E616d65, 0) AS [Style 0, binary to character];
Sonuç kümesi aşağıdadır.
Style 0, binary to character
----------------------------
Name
Bu örnek, Stil'in 1 sonuç kesintisini zorunlu kılabildiğini gösteriyor. Sonuç setindeki karakterler 0x kesintiye zorlar.
SELECT CONVERT (CHAR (8), 0x4E616d65, 1) AS [Style 1, binary to character];
Sonuç kümesi aşağıdadır.
Style 1, binary to character
------------------------------
0x4E616D
Bu örnek, Style'ın 2 sonucu kısaltmadığını gösteriyor, çünkü sonuç karakterleri 0xiçermiyor.
SELECT CONVERT (CHAR (8), 0x4E616d65, 2) AS [Style 2, binary to character];
Sonuç kümesi aşağıdadır.
Style 2, binary to character
------------------------------
4E616D65
Karakter değerini Name ikili bir değere dönüştürün.
SELECT CONVERT (BINARY (8), 'Name', 0) AS [Style 0, character to binary];
Sonuç kümesi aşağıdadır.
Style 0, character to binary
----------------------------
0x4E616D6500000000
SELECT CONVERT (BINARY (4), '0x4E616D65', 1) AS [Style 1, character to binary];
Sonuç kümesi aşağıdadır.
Style 1, character to binary
----------------------------
0x4E616D65
SELECT CONVERT (BINARY (4), '4E616D65', 2) AS [Style 2, character to binary];
Sonuç kümesi aşağıdadır.
Style 2, character to binary
----------------------------------
0x4E616D65
Ben. Tarih ve saat veri türlerini dönüştürme
Bu örnekte tarih, saat ve tarih saat veri türlerinin dönüştürülmesi gösterilmektedir.
DECLARE @d1 AS DATE,
@t1 AS TIME,
@dt1 AS DATETIME;
SET @d1 = GETDATE();
SET @t1 = GETDATE();
SET @dt1 = GETDATE();
SET @d1 = GETDATE();
-- When converting date to datetime the minutes portion becomes zero.
SELECT @d1 AS DATE,
CAST (@d1 AS DATETIME) AS [date as datetime];
-- When converting time to datetime the date portion becomes zero
-- which converts to January 1, 1900.
SELECT @t1 AS TIME,
CAST (@t1 AS DATETIME) AS [time as datetime];
-- When converting datetime to date or time non-applicable portion is dropped.
SELECT @dt1 AS DATETIME,
CAST (@dt1 AS DATE) AS [datetime as date],
CAST (@dt1 AS TIME) AS [datetime as time];
Datetime veya datetime2 dönüştürmesini göz önünde bulundurarak değerlerin uyumlu bir aralık içinde olduğundan emin olun.
Datetime için en düşük yıl değeri olurken1753, en düşük yıl değeri 0001date ve datetime2 içindir.
DECLARE @d1 AS DATE,
@dt1 AS DATETIME,
@dt2 AS DATETIME2;
SET @d1 = '1492-08-03';
--This is okay; Minimum YYYY for DATE is 0001
SET @dt2 = CAST (@d1 AS DATETIME2);
--This is okay; Minimum YYYY for DATETIME2 IS 0001
SET @dt1 = CAST (@d1 AS DATETIME);
--This returns an error with (Msg 242) "The conversion of a date data type to a datetime data type resulted in an out-of-range value."
--Minimum YYYY for DATETIME is 1753
J. FARKLı biçimlerde tarih saat verileriyle CONVERT kullanma
Değerlerden GETDATE() başlayarak, bu örnekte CONVERT bu makalenin Tarih ve Saat stilleri bölümündeki tüm tarih ve saat stilleri görüntülenir.
| Biçim # | Örnek sorgu | Örnek sonuç |
|---|---|---|
0 |
SELECT CONVERT(NVARCHAR, GETDATE(), 0) |
23 Ağustos 2019 13:39 |
1 |
SELECT CONVERT(NVARCHAR, GETDATE(), 1) |
08/23/19 |
2 |
SELECT CONVERT(NVARCHAR, GETDATE(), 2) |
19.08.23 |
3 |
SELECT CONVERT(NVARCHAR, GETDATE(), 3) |
23/08/19 |
4 |
SELECT CONVERT(NVARCHAR, GETDATE(), 4) |
23.08.19 |
5 |
SELECT CONVERT(NVARCHAR, GETDATE(), 5) |
23-08-19 |
6 |
SELECT CONVERT(NVARCHAR, GETDATE(), 6) |
23 Ağustos 19 |
7 |
SELECT CONVERT(NVARCHAR, GETDATE(), 7) |
23 Ağustos 19 |
8 veya 24 veya 108 |
SELECT CONVERT(NVARCHAR, GETDATE(), 8) |
13:39:17 |
9 veya 109 |
SELECT CONVERT(NVARCHAR, GETDATE(), 9) |
23 Ağustos 2019 1:39:17:090 |
10 |
SELECT CONVERT(NVARCHAR, GETDATE(), 10) |
08-23-19 |
11 |
SELECT CONVERT(NVARCHAR, GETDATE(), 11) |
19/08/23 |
12 |
SELECT CONVERT(NVARCHAR, GETDATE(), 12) |
190823 |
13 veya 113 |
SELECT CONVERT(NVARCHAR, GETDATE(), 13) |
23 Ağustos 2019 13:39:17:090 |
14 veya 114 |
SELECT CONVERT(NVARCHAR, GETDATE(), 14) |
13:39:17:090 |
20 veya 120 |
SELECT CONVERT(NVARCHAR, GETDATE(), 20) |
2019-08-23 13:39:17 |
21 veya 25 veya 121 |
SELECT CONVERT(NVARCHAR, GETDATE(), 21) |
2019-08-23 13:39:17.090 |
22 |
SELECT CONVERT(NVARCHAR, GETDATE(), 22) |
23.08.19 13:39:17 |
23 |
SELECT CONVERT(NVARCHAR, GETDATE(), 23) |
2019-08-23 |
101 |
SELECT CONVERT(NVARCHAR, GETDATE(), 101) |
08/23/2019 |
102 |
SELECT CONVERT(NVARCHAR, GETDATE(), 102) |
2019.08.23 |
103 |
SELECT CONVERT(NVARCHAR, GETDATE(), 103) |
23/08/2019 |
104 |
SELECT CONVERT(NVARCHAR, GETDATE(), 104) |
23.08.2019 |
105 |
SELECT CONVERT(NVARCHAR, GETDATE(), 105) |
23-08-2019 |
106 |
SELECT CONVERT(NVARCHAR, GETDATE(), 106) |
23 Ağustos 2019 |
107 |
SELECT CONVERT(NVARCHAR, GETDATE(), 107) |
23 Ağustos 2019, Ağustos 2019 |
110 |
SELECT CONVERT(NVARCHAR, GETDATE(), 110) |
08-23-2019 |
111 |
SELECT CONVERT(NVARCHAR, GETDATE(), 111) |
2019/08/23 |
112 |
SELECT CONVERT(NVARCHAR, GETDATE(), 112) |
20190823 |
113 |
SELECT CONVERT(NVARCHAR, GETDATE(), 113) |
23 Ağustos 2019 13:39:17.090 |
120 |
SELECT CONVERT(NVARCHAR, GETDATE(), 120) |
2019-08-23 13:39:17 |
121 |
SELECT CONVERT(NVARCHAR, GETDATE(), 121) |
2019-08-23 13:39:17.090 |
126 |
SELECT CONVERT(NVARCHAR, GETDATE(), 126) |
2019-08-23T13:39:17.090 |
127 |
SELECT CONVERT(NVARCHAR, GETDATE(), 127) |
2019-08-23T13:39:17.090 |
130 |
SELECT CONVERT(NVARCHAR, GETDATE(), 130) |
22 ذو الحجة 1440 1:39:17.090P |
131 |
SELECT CONVERT(NVARCHAR, GETDATE(), 131) |
12.22.1440 1:39:17.090 |
K. İzin verilen dönüştürmelerde veri türü önceliği etkileri
Aşağıdaki örnek varchar(10) türünde bir değişken tanımlar, değişkene bir tamsayı değeri atar ve ardından değişkeni bir dizeyle birleştirmeyi seçer.
DECLARE @string AS VARCHAR (10);
SET @string = 1;
SELECT @string + ' is a string.' AS Result;
Sonuç kümesi aşağıdadır.
Result
-----------------------
1 is a string.
1 int değeri varchar'a dönüştürüldü.
Bu örnekte, bunun yerine int değişkeni kullanan benzer bir sorgu gösterilmektedir:
DECLARE @notastring AS INT;
SET @notastring = '1';
SELECT @notastring + ' is not a string.' AS Result;
Bu durumda, SELECT deyimi aşağıdaki hatayı atar:
Msg 245, Level 16, State 1, Line 3
Conversion failed when converting the varchar value ' is not a string.' to data type int.
İfadeyi @notastring + ' is not a string.'değerlendirmek için Database Engine'in veri tipi önceliği kurallarına uyması gerekir ve böylece ifade sonucu hesaplanamadan önce örtük dönüşümü tamamlamalıdır.
Int, varchar'dan daha yüksek önceliğe sahip olduğundan, Database Engine diziyi tam sayıya dönüştürmeye çalışır ve başarısız olur çünkü bu dizi tam sayıya dönüştürülemez.
Dönüştürülebilecek bir dizem sağlarsak, ime başarılı olur, aşağıdaki örnekte görüldüğü gibi:
DECLARE @notastring AS INT;
SET @notastring = '1';
SELECT @notastring + '1';
Bu durumda, dize '1' tamsayı değerine 1dönüştürülebilir, bu nedenle bu SELECT deyim değerini 2döndürür. Verilen veri türleri tam sayı olduğunda, + operatör bir dizi birleştirmesi yerine toplama matematiksel operatörü olur.
Örnekler: Azure Synapse Analytics
L. CAST ve CONVERT kullanma
Bu örnek, liste fiyatının ilk bassamında bulunan 3 ürünler için ürünün adını alır ve bu ürünlerin adını ListPrice dönüştürür. Veritabanını kullanırAdventureWorksDW2025.
SELECT EnglishProductName AS ProductName,
ListPrice
FROM dbo.DimProduct
WHERE CAST (ListPrice AS INT) LIKE '3%';
Bu örnek, yerine CONVERTkullanarak CAST aynı sorguyu gösterir. Veritabanını kullanır AdventureWorksDW2025 .
SELECT EnglishProductName AS ProductName,
ListPrice
FROM dbo.DimProduct
WHERE CONVERT (INT, ListPrice) LIKE '3%';
M. Aritmetik işleçlerle CAST kullanma
Bu örnek, ürün birim fiyatını () indirim yüzdesineUnitPrice (UnitPriceDiscountPct) bölerek tek bir sütun değeri hesaplar. Bu sonuç daha sonra en yakın tamsayıya yuvarlanıp son olarak int veri türüne dönüştürülür. Bu örnekte veritabanı kullanılır AdventureWorksDW2025 .
SELECT ProductKey,
UnitPrice,
UnitPriceDiscountPct,
CAST (ROUND(UnitPrice * UnitPriceDiscountPct, 0) AS INT) AS DiscountPrice
FROM dbo.FactResellerSales
WHERE SalesOrderNumber = 'SO47355'
AND UnitPriceDiscountPct > .02;
Sonuç kümesi aşağıdadır.
ProductKey UnitPrice UnitPriceDiscountPct DiscountPrice
---------- --------- -------------------- -------------
323 430.6445 0.05 22
213 18.5043 0.05 1
456 37.4950 0.10 4
456 37.4950 0.10 4
216 18.5043 0.05 1
N. LIKE yan tümcesiyle CAST kullanma
Bu örnek, para sütununu ListPriceint türüne, ardından char(20) tipine dönüştürür, böylece cümle LIKE bunu kullanabilir. Bu örnekte veritabanı kullanılır AdventureWorksDW2025 .
SELECT EnglishProductName AS Name,
ListPrice
FROM dbo.DimProduct
WHERE CAST (CAST (ListPrice AS INT) AS CHAR (20)) LIKE '2%';
O. TARIH saat verileriyle CAST ve CONVERT kullanma
Bu örnekte geçerli tarih ve saat görüntülenir, geçerli tarih ve saati karakter veri türüyle değiştirmek için kullanılır CASTCONVERT ve son olarak tarih ve saati ISO 8601 biçiminde görüntüler. Bu örnekte veritabanı kullanılır AdventureWorksDW2025 .
SELECT TOP (1) SYSDATETIME() AS UnconvertedDateTime,
CAST (SYSDATETIME() AS NVARCHAR (30)) AS UsingCast,
CONVERT (NVARCHAR (30), SYSDATETIME(), 126) AS UsingConvertTo_ISO8601
FROM dbo.DimCustomer;
Sonuç kümesi aşağıdadır.
UnconvertedDateTime UsingCast UsingConvertTo_ISO8601
--------------------- --------------------------- ---------------------------
07/20/2010 1:44:31 PM 2010-07-20 13:44:31.5879025 2010-07-20T13:44:31.5879025
Bu örnek, önceki örneğin kabaca tersidir. Bu örnekte bir tarih ve saat karakter verileri olarak görüntülenir, karakter verilerini CAST veri türüne dönüştürmek için kullanılır ve ardından karakter verilerini CONVERT veri türüne değiştirmek için kullanılır. Bu örnekte veritabanı kullanılır AdventureWorksDW2025 .
SELECT TOP (1) '2010-07-25T13:50:38.544' AS UnconvertedText,
CAST ('2010-07-25T13:50:38.544' AS DATETIME) AS UsingCast,
CONVERT (DATETIME, '2010-07-25T13:50:38.544', 126) AS UsingConvertFrom_ISO8601
FROM dbo.DimCustomer;
Sonuç kümesi aşağıdadır.
UnconvertedText UsingCast UsingConvertFrom_ISO8601
----------------------- ----------------------- ------------------------
2010-07-25T13:50:38.544 07/25/2010 1:50:38 PM 07/25/2010 1:50:38 PM