XML, saat, tarih, datetime2 ve datetimeoffset veri türleri ile 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 /.
SqlTypes.xsd şeması belgesi
2004 XML şema ad alanı, aşağıdakileri içerecek şekilde genişletildi SQL Server veri türleri:SAAT, TARİH, datetime2, anddatetimeoffset.
.NET framework System.Data.SqlDbType
Aşağıdaki listeleme eklenir SqlDbTypeEnum.
SQL Server türü |
.NET framework SqlDbType |
---|---|
date |
Date |
time |
Time |
datetime2 |
LargeDateTime |
datetimeoffset |
DateTimeWithTimeZone |
Tamamlandı 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 tabloda, şema tanımlarının de yeni olan tarih ve saat veri türleri listelenmektedir. SQL Server 2008.
Veri türü |
Şema tanımı |
---|---|
datetime |
|
smalldatetime |
|
date |
|
time |
|
datetime2 |
|
datetimeoffset |
|
XML şema ad alanı sistem katalogları
Yeni bir tarih ve saat içinde varolan eklenen bilgi yazın 2004 XML şema ad alanı için doldurulur ve aşağıdaki XML şema belirli sistem kataloglarından sorgulanabilir:
Sys.xml_schemla_namespaces
Sys.xml_schema_collections
Sys.xml_schema_components
XML value() yöntem
XML value() yöntem belirtmek için bir yol sağlayan SQL Server Ayıklanan değer veri türü. Bu dönüştürme için XSD değerinden belirtir bir SQL Server Belirtilen tür değeri. The SQL Server tarih and saat types are supported for the following casts:
tarih gösteren bir XQuery değer örnek içine artığını bir date, datetime, smalldatetime, datetime2, datetimeoffset, veya herhangi türde karakter SQL Server.
Içine bir zamanı gösteren herhangi bir XQuery değer örnek atama time, datetime, smalldatetime, datetime2, datetimeoffset veya herhangi bir karakter türü SQL Server.
Bir tarih ile saati ve saat dilimini temsil eden bir XQuery değer örnek olarak atama datetime, smalldatetime, datetimeoffet (0 bölge uzaklık) ile date (iptal saat bölümü) time (iptal tarih bölümü) datetime2, veya herhangi bir karakter türü SQL Server.
Bir Z veya saat dilimi uzaklığı içeren süresine sahip olan bir tarihi gösteren bir XQuery değer örnek (+ |-ss: dd) içine atama datetime Bölge uzaklık olmadan (UTC), smalldatetime Bölge uzaklık olmadan (UTC), datetimeoffet, date (süre) bölümü ve bölge uzaklık kesildiğinde, datetime2 Bölge uzaklık olmadan (UTC), time (tarih bölümü ve bölge uzaklık çıkarılır) veya herhangi türde karakter SQL Server.
Dönüþtürme taşma veya aralık dışı bir duruma yol açar, bir hata iletisi döndürdü.
Tarih, saat veya tarih zaman değeri (olan veya olmayan bir saat dilimi) ile farklı bir hedef türü (kesirli saniye) daha fazla duyarlık, daha büyük kesirli saniye duyarlık yuvarlanır.
Tarih biçiminde gösteren herhangi bir örneğinin XML değeri bir date veri türü tarafından belirlenir küme DİLİ and küme dateformat 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() ve sql:variable() Tanı date, time, datetime2, ve datetimeoffset veri türleri.
SQL Server'a, XSD türü eşleştirmesi
Için sql:variable() ve sql:column(), gelen dönüştürülmüş Xquery değerinin Xquery temel tür SQL Server değer tarafından belirlenir SQL Server XSD türü eşleştirmesi için anlamsal. Bu eşleştirme anlambilim genişletilmiş XML şema ad alanında tanımlanır.
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
Içinde SQL Server 2008, yeni'yi kullanarak tarih ve saat türü değişiklikleri XML örnek için depolama biçimi SQL Server Tarih ve saat türü. Aşağıdaki tablo için XSD gösterir. SQL Server veri eşleme türü. Bu eşleştirme işlemi arasında iade sonuçlarını anlambilim da belirler sql:column() ve sql:variable() ve XML örnekleri tarih ve saat.
XSD türü |
XML depolama TZ ile SQL Server türü eşleştirmesi |
XML depolama SQL Server olmadan TZ türü eşleştirmesi |
---|---|---|
xs:date |
datetimeoffset |
date |
xs:time |
datetimeoffset |
datetimeoffset |
xs:dateTime |
datetimeoffset |
datetime2 |
XML ve XMLSCHEMA yan tümceleri için
SQL Server sütunları tarafından bildirilen date, time, datetime2, ve datetimeoffset veri türleri IÇIN XML veya XMLSCHEMA yan tümce SELECT deyiminde belirtilen desteklenmez.
Çıktı biçimi
Aşağıdaki tablo listeleri IÇIN XML biçimler için çıkış date, time, datetime2, ve datetimeoffset veri türleri.
SQL Server türü |
Biçimi IÇIN XML çıktı |
---|---|
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ürleriyle 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 ile XMLSCHEMA yan tümce
XMLSCHEMA yan tümce IÇIN XML yan tümce ile uygulandığında oluşturulan XSD satır içi şema, her yeni bir tarih ve saat genişletilmiş varolan XML şema ad türleri için tanımlı desene kısıtlama yöntemleri izler.
OPENXML () işlev
OPENXML giriş biçimleri aşağıdaki tabloda listelenmiştir date, time, datetime2, ve datetimeoffset veri türleri.
SQL Server türü |
Biçimi IÇIN XML çıktı |
---|---|
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 kullanır. 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