Saat, tarih, datetime2 ve datetimeoffset veri türleri xml kullanma
Varolan xml şeması belgesi sqltypes.xsd açıklamak için kullanılan W3C xml şema türlerini açıklar SQL Server veri türü için xml ve http / soap.
SqlTypes.xsd şema belgesi
2004 xml şema ad alanı aşağıdakileri içerecek şekilde genişletilmiş SQL Server veri türleri: saat, Tarih, datetime2, ve datetimeoffset.
..NET Framework System.Data.SqlDbType
Aşağıdaki numaralandırma eklenen SqlDbTypeEnum.
sql Server türü |
.net Framework SqlDbType |
---|---|
date |
Date |
time |
Time |
datetime2 |
LargeDateTime |
datetimeoffset |
DateTimeWithTimeZone |
Tam SqlDbTypeEnum aşağıdaki gibidir:
<xsd:simpleType name="sqlDbTypeEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="BigInt" />
<xsd:enumeration value="Binary" />
<xsd:enumeration value="Bit" />
<xsd:enumeration value="Char" />
<xsd:enumeration value="Date" />
<xsd:enumeration value="DateTime" />
<xsd:enumeration value="DateTimeWithTimeZone" />
<xsd:enumeration value="Decimal" />
<xsd:enumeration value="Float" />
<xsd:enumeration value="Image" />
<xsd:enumeration value="Int" />
<xsd:enumeration value="LargeDateTime" />
<xsd:enumeration value="Money" />
<xsd:enumeration value="NChar" />
<xsd:enumeration value="NText" />
<xsd:enumeration value="NVarChar" />
<xsd:enumeration value="Real" />
<xsd:enumeration value="SmallDateTime" />
<xsd:enumeration value="SmallInt" />
<xsd:enumeration value="SmallMoney" />
<xsd:enumeration value="Text" />
<xsd:enumeration value="Time" />
<xsd:enumeration value="Timestamp" />
<xsd:enumeration value="TinyInt" />
<xsd:enumeration value="Udt" />
<xsd:enumeration value="UniqueIdentifier" />
<xsd:enumeration value="VarBinary" />
<xsd:enumeration value="VarChar" />
<xsd:enumeration value="Variant" />
<xsd:enumeration value="Xml" />
</xsd:restriction>
</xsd:simpleType>
Açıklama ve sql Server tarih ve saat veri türlerini eşleştirme
Aşağıdaki tablo de yeni tarih ve saat veri türleri için şema tanımlarını listeler SQL Server 2008.
Veri türü |
Şema tanımı |
---|---|
datetime |
|
smalldatetime |
|
date |
|
time |
|
datetime2 |
|
datetimeoffset |
|
xml şema ad alanı sistem kataloglar
Yeni tarih ve saat varolan eklenen bilgileri yazın 2004 xml şema ad alanı için doldurulur ve aşağıdaki xml şema belirli sistem kataloglarından sorgulanan:
Sys.xml_schemla_namespaces
Sys.xml_schema_collections
Sys.xml_schema_components
xml value() yöntemi
xml value() yöntem belirtmek için bir yol sağlar SQL Server veri türünü ayıklanan değer.Bu xsd değere dönüştürme anlamına gelir bir SQL Server değeri için belirtilen türü.The SQL Server date and time types are supported for the following casts:
İçine tarih gösteren XQuery değer örnek artığını bir date, datetime, smalldatetime, datetime2, datetimeoffset, ya da herhangi karakter türü SQL Server.
Gösteren XQuery değer örnek bir saat içine artığını time, datetime, smalldatetime, datetime2, datetimeoffset veya herhangi bir karakter türünü SQL Server.
Halinde olan saat ve saat dilimi olmayan tarih gösteren XQuery değer örnek artığını datetime, smalldatetime, datetimeoffet (0 bölge uzaklık) ile date (saat bölümü bırakılan), time (tarih bölümü bırakılan), datetime2, veya herhangi bir karakter türünü SQL Server.
z veya saat dilimi uzaklığı olan saat ile tarih gösteren XQuery değer örnek (+ |-ss: dd) içine artığını datetime (utc bölge uzaklık olmadan), smalldatetime (utc bölge uzaklık olmadan), datetimeoffet, date (süresi bölümü ve bölge uzaklık bırakılan), datetime2 (utc bölge uzaklık olmadan), time (tarih bölümü ve bölge uzaklık bırakılan), veya herhangi karakter türü SQL Server.
Cast taşma veya aralık dışı bir durumu müşteri adayları ise bir hata iletisi döndürülür.
Tarih, saat veya tarih zaman değeri (ile veya olmadan saat dilimi) ile hedef türü'den daha fazla duyarlılık (Kesirli saniye) varsa, daha büyük Kesirli saniye duyarlık yuvarlanır.
Herhangi bir xml değeri tarih biçimi örnek temsil eden bir date veri türü tarafından belirlenir Dil ve set VBLONGDATE ayarlar.
Örnek
Aşağıdaki örnek value() yöntem.
DECLARE @myDoc xml;
DECLARE @OrderID int;
DECLARE @OrderDate date;
DECLARE @OrderTime time;
DECLARE @OrderDateTime datetimeoffset;
SET @myDoc = '<Root>
<OrderDescription OrderID="1" OrderDate="1999-12-20" OrderTime="13:40:58.47786" OrderDateTime="1999-12-20 13:40:58.123-05:00">
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</OrderDescription>
</Root>';
SET @OrderID = @myDoc.value('(/Root/OrderDescription/@OrderID)[1]', 'int');
SET @OrderDate = @myDoc.value('(/Root/OrderDescription/@OrderDate)[1]', 'date');
SET @OrderTime = @myDoc.value('(/Root/OrderDescription/@OrderTime)[1]', 'time');
SET @OrderDateTime = @myDoc.value('(/Root/OrderDescription/@OrderDateTime)[1]', 'datetimeoffset');
SELECT @OrderID,@OrderDate,@OrderTime,@OrderDateTime;
--Returns: 1 1999-12-20 13:40:58.4778600 1999-12-20 13:40:58.1230000 -0
XQuery Pseudofunctions
sql:column()and sql:variable() recognize the date, time, datetime2, and datetimeoffset data types.
sql Server'a xsd türü eşleştirmesi
İçin sql:variable() ve sql:column(), dan dönüştürülmüş Xquery değer Xquery temel türü SQL Server değer tarafından belirlenir SQL Server anlamsal xsd türü eşlemesi için. Anlamsal Bu eşleme tanımlanmış genişletilmiş xml şema ad alanı.
sql Server türü |
xsd türü |
---|---|
date |
xsd:tarih |
time |
xsd:saat |
datetime2 |
xsd:DateTime |
datetimeoffset |
xsd:DateTime |
xml depolama biçimi türü eşleştirmesi
De SQL Server 2008, depolama biçimi kullanarak yeni tarih ve saat türleri değişiklikleri xml örnek için SQL Server Tarih ve saat türleri.Aşağıdaki tablo için xsd gösterir SQL Server veri türü eşleştirme. Bu eşleştirme işlemi iade sonuçlarını arasında anlamsal de belirleyecek sql:column() ve sql:variable() ve xml tarih ve saat örnekleri.
xsd türü |
xml depolama sql Server türü eşleştirmesi tz ile |
xml depolama sql Server türü eşleştirmesi tz olmadan |
---|---|---|
xs:date |
datetimeoffset |
date |
xs:time |
datetimeoffset |
datetimeoffset |
xs:dateTime |
datetimeoffset |
datetime2 |
xml ve xmlschema yan tümceleri için
SQL Servertarafından bildirilen sütunlar date, time, datetime2, ve datetimeoffset veri türleri desteklenir, for xml veya xmlschema yan tümce tümce tümce belirtilen deyim.
Çıktı biçimi
Aşağıdaki tablo listeleri için xml çıktı biçimleri için date, time, datetime2, ve datetimeoffset veri türü.
sql Server türü |
xml için çıktı biçimi |
---|---|
date |
YYYY-AA-GG |
time |
hh:mm:ss[.nnnnnnn] |
datetime2 |
YYYY-MM-DDThh:mm:ss[.nnnnnnn] |
datetimeoffset |
YYYY-MM-DDThh:mm:ss[.nnnnnnn] [+|-]hh:mm |
Örnek
Aşağıdaki örnek date, time, vedatetimeoffset türleri ile FOR XML.
CREATE TABLE T1
(
dt date, tm time, dtz datetimeoffset
);
GO
INSERT INTO T1
VALUES('1996-12-16', '12:30:47.7867', '1996-12-16 12:30:47.7867-05:00');
SELECT dt FROM T1 FOR XML AUTO;
--Returns:
--XML_F52E2B61-18A1-11d1-B105-00805F49916B
------------------------------------------
--<t1 dt="1996-12-16"/>
SELECT tm FROM T1 FOR XML AUTO;
--Returns:
--XML_F52E2B61-18A1-11d1-B105-00805F49916B
------------------------------------------
--<t1 tm="12:30:47.7867"/>
SELECT dtz FROM T1 FOR XML AUTO;
--Returns:
--XML_F52E2B61-18A1-11d1-B105-00805F49916B
------------------------------------------
--<t1 dtz="1996-12-16T12:30:47.7867 -05:00"/>
xsd satır içi şema xmlschema yan tümcesi ile birlikte
Oluşturulan xsd satır içi şema for xml yan tümce tümce tümce ile xmlschema yan tümce tümce tümce uygulandığında, her yeni tarih ve saat türleri genişletilmiş varolan xml şema ad alanı için tanımlanmış desen kısıtlama yöntemleri takip eder.
openxml () işlevi
Aşağıdaki tablo için openxml giriş biçimlerini listeler date, time, datetime2, ve datetimeoffset veri türü.
sql Server türü |
xml için çıktı biçimi |
---|---|
date |
YYYY-AA-GG |
time |
hh:mm:ss[.nnnnnnn] |
datetime2 |
YYYY-MM-DDThh:mm:ss[.nnnnnnn] |
datetimeoffset |
YYYY-MM-DDThh:mm:ss[.nnnnnnn][+|-]hh:mm |
Örnek
Aşağıdaki örnek OPENXML ile datetimeoffset veri türü.
CREATE TABLE T1
(
dt date, tm time(7), dtz datetimeoffset(7)
)
GO
DECLARE @docHandle int;
DECLARE @xmlDocument nvarchar(max); -- or xml type
SET @xmlDocument = N'<ROOT>
<T1 dt="2000-08-25" tm="12:30:47.1234567" dtz="2000-08-25T05:22:36.1234567-05:00"/>
</ROOT>';
EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlDocument;
-- Use OPENXML to provide rowset that consists of customer data.
INSERT T1
SELECT *
FROM OPENXML(@docHandle, N'/ROOT/T1')
WITH T1;
-- Using OPENXML in a SELECT statement
SELECT * FROM OPENXML(@docHandle, N'/ROOT/T1') WITH (dt date , tm time, dtz datetimeoffset);
EXEC sp_xml_removedocument @docHandle