Za pomocą języka XML z czas, data, dataczas2, a dataczasprzesunięcia typów danych
Istniejący dokument schematu XML sqltypes.xsd opisano typy schematów W3C XML, które są używane do opisywania SQL Server typy danych dla XML i HTTP / SOAP.
SqlTypes.xsd dokument schematu
The 2004 XML schema namespace has been extended to include the following SQL Server data types: time, date, datetime2, and datetimeoffset.
.NET Framework System.Data.SqlDbType
Dodaje się następujące wyliczenia SqlDbTypeEnum.
Typ programu SQL Server |
.NET Framework SqlDbType |
---|---|
date |
Date |
time |
Time |
datetime2 |
LargeDateTime |
datetimeoffset |
DateTimeWithTimeZone |
Pełne SqlDbTypeEnum jest następujący:
<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>
Opis i mapowania programu SQL Server Data i czas typów danych
Poniższa tabela zawiera definicje schematu dla data i czas typy danych, które są nowe w SQL Server 2008.
Typ danych |
Definicja schematu |
---|---|
datetime |
|
smalldatetime |
|
date |
|
time |
|
datetime2 |
|
datetimeoffset |
|
Katalogi systemu nazw schematu XML
Nowa data i czas typ informacji, które jest dodawany do nazw istniejących schematów XML 2004 jest wpisywany do i mogą być wyszukiwane z następujących katalogów systemu określonego schematu XML:
Sys.xml_schemla_namespaces
Sys.xml_schema_collections
Sys.xml_schema_components
Value() XML, metoda
XML value() metoda zawiera sposób wskazywania SQL Server Typ danych wartości wyodrębnione.Oznacza to konwersja wartości XSD do SQL Server wartość dla określonego typu. SQL Server Data i czas dla następujących poświaty są obsługiwane typy:
Dowolne wystąpienie wartość XQuery, który reprezentuje data można rzutować na date, datetime, smalldatetime, datetime2, datetimeoffset, lub dowolnego znaku typu w SQL Server.
Dowolne wystąpienie wartość XQuery, który reprezentuje czas można rzutować na time, datetime, smalldatetime, datetime2, datetimeoffset lub dowolny typ znaku w SQL Server.
Dowolne wystąpienie wartość XQuery, reprezentującą data, czas i bez strefę czasową można rzutować na datetime, smalldatetime, datetimeoffet (z 0 przesunięcie strefy), date (utracona część czasu), time (utracona część data), datetime2, lub dowolny typ znaku w SQL Server.
Dowolne wystąpienie wartość XQuery, reprezentującą data z razem z przesunięcia z lub strefy czasowej (+ |-gg: mm) można rzutować na datetime UTC bez przesunięcie strefy, smalldatetime UTC bez przesunięcie strefy, datetimeoffet, date (czas porzucone przesunięcie części i strefy), datetime2 (UTC bez przesunięcie strefy), time (opuszczone przesunięcie data części i strefę,) lub dowolnego znaku typu w SQL Server.
Jeśli wytopu prowadzi do przepełnienia lub poza zakres warunek zostanie zwrócony komunikat o błędzie.
Jeśli data, czas lub data z czas wartość (z lub bez czas strefy) ma precyzję (ułamków sekund) niż typ miejsce docelowe ułamków sekund większej dokładności zostaną zaokrąglone.
Format data dowolną wartość XML wystąpienie reprezentująca date Typ danych jest określany przez Ustaw język i USTAWIĆ format data ustawienia.
Przykład
W poniższym przykładzie użyto value() metoda.
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.
Mapowanie typu XSD w programie SQL Server
Dla sql:variable() i sql:column(), Xquery typu podstawowego wartość Xquery przekształcone z SQL Server wartość jest określana przez SQL Server semantyczne mapowanie typu XSD. To mapowanie semantycznych jest zdefiniowany w rozszerzonej XML schematu obszaru nazw.
Typ programu SQL Server |
Typ XSD |
---|---|
date |
xsd:data |
time |
xsd:czas |
datetime2 |
xsd:DateTime |
datetimeoffset |
xsd:DateTime |
Mapowanie typu formatu magazynu XML
W SQL Server 2008, format przechowywania dla wystąpienie XML Data i czas typy zmian za pomocą nowej SQL Server Data i czas typów.W poniższej tabela przedstawiono XSD do mapowania typów danychSQL Server . Mapowanie określi także semantyczną między wynikami zwrotu operacji sql:column() i sql:variable() i Data XML i czas wystąpień.
Typ XSD |
Mapowanie typu programu SQL Server magazynu XML z TZ |
Magazyn XML SQL Server mapowanie typu bez TZ |
---|---|---|
xs:date |
datetimeoffset |
date |
xs:time |
datetimeoffset |
datetimeoffset |
xs:dateTime |
datetimeoffset |
datetime2 |
XML i klauzule schematu XML
SQL Serverkolumny, które są zadeklarowane przez date, time, datetime2, i datetimeoffset typy danych są obsługiwane, gdy dla XML lub schematu XML klauzula jest określona w instrukcja SELECT.
Format wyjściowy
Listy XML dla formatów dla tabela następujący date, time, datetime2, i datetimeoffset typów danych.
Typ programu SQL Server |
XML format wyjściowy |
---|---|
date |
RRRR MM-DD |
time |
hh:mm:ss[.nnnnnnn] |
datetime2 |
YYYY-MM-DDThh:mm:ss[.nnnnnnn] |
datetimeoffset |
YYYY-MM-DDThh:mm:ss[.nnnnnnn] [+|-]hh:mm |
Przykład
W poniższym przykładzie użyto date, time, idatetimeoffset typy z 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"/>
Schemat wbudowany XSD z klauzuli schematu XML
Po zastosowaniu schematu XML klauzula z klauzula XML dla wygenerowanych schemat wbudowany XSD następuje wzorzec metody ograniczenie zdefiniowane dla każdej nowej data i czas typów w rozszerzonej istniejących nazw schematu XML.
(OPENXML) funkcji
W poniższej tabela przedstawiono formaty wejściowe OPENXML dla date, time, datetime2, i datetimeoffset typów danych.
Typ programu SQL Server |
XML format wyjściowy |
---|---|
date |
RRRR MM-DD |
time |
hh:mm:ss[.nnnnnnn] |
datetime2 |
YYYY-MM-DDThh:mm:ss[.nnnnnnn] |
datetimeoffset |
YYYY-MM-DDThh:mm:ss[.nnnnnnn][+|-]hh:mm |
Przykład
W poniższym przykładzie użyto OPENXML z datetimeoffset typu danych.
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