2017-06-28 8 views
0

こんにちは私はSQLサーバーでXMLを使用していますが、SMALLDATETIME変数で変更機能を使用しようとしていますが、それで希望の結果が得られません。XMLを変更する - SMALLDATETIME

DECLARE @Shift_StartDate SMALLDATETIME = '2017-06-05 09:00:00'; 
DECLARE @Shift_EndDate SMALLDATETIME = '2017-06-05 09:30:00'; 
DECLARE @x XML = '<dbo.tblXXXX StartDate="" EndDate="" />' 
SET @x.modify('replace value of (/*[1]/@StartDate) with sql:variable("@Shift_StartDate")') 
SET @x.modify('replace value of (/*[1]/@EndDate) with sql:variable("@Shift_EndDate")') 

SELECT @X 

出力はです。最後に追加の「.000」が追加されています。どうすればそれらを取り除くことができますか?

<dbo.tblXXXX StartDate="2017-06-05T09:00:00.000" EndDate="2017-06-05T09:30:00.000" /> 

私は以下のクエリを実行すると、私は、これが返されているものであるとして、以下に示すたいとする上記の出力をしたい

<dbo.tblXXXX StartDate="2017-06-05T09:00:00" EndDate="2017-06-05T09:30:00" /> 

DECLARE @ActualXml XML; 

SET @ActualXml = (SELECT 
        [StartDate], 
        [EndDate] 
        FROM [dbo].[tblXXXX] 
        WHERE UniqueId = 8124X 
        FOR XML AUTO) 
SELECT @ActualXml 

[開始日]のデータ型と[終了日]「SMALLDATETIME」

です

XML変更関数が.000なしで同じ結果を返すようにします。

お勧めします。事前 で おかげラオ

+0

データ型は? 開始日? –

+0

SMALLDATETIMEです。私はあまりにも質問を更新します。 – BRDroid

+0

デフォルトでは、<_x0023_temp StartDate = "2017-06-05T09:00:00" /> –

答えて

0

あなたはxs:stringに値をキャストした文字列を遮断するためのXQueryのsubstringを使用する場合があります。

DECLARE @Shift_StartDate SMALLDATETIME = '2017-06-05 09:00:00'; 
DECLARE @Shift_EndDate SMALLDATETIME = '2017-06-05 09:30:00'; 
DECLARE @x XML = '<dbo.tblXXXX StartDate="" EndDate="" />' 
SET @x.modify('replace value of (/*[1]/@StartDate) with substring(xs:string(sql:variable("@Shift_StartDate")),1,19)') 
SET @x.modify('replace value of (/*[1]/@EndDate) with sql:variable("@Shift_EndDate")') 

SELECT @X 

結果EndDateながら

<dbo.tblXXXX StartDate="2017-05-06T09:00:00" EndDate="2017-05-06T09:30:00.000" /> 

StartDateは、.000なしです

関連する問題