Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 xquery sql:column() convert date  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
SQL 2008

таблица с полем smalldatetime (UPDDATE)
использую примерный запрoс с xquery

select idrow, xmlShow.query(
'	
 <ITEM>
	{
		for $D in ITEM/node()
		return $D
	}
	<UPDDATE>{sql:column("UPDDATE")}</UPDDATE>
</ITEM>	
') 



дата возвращается в формате <UPDDATE>2015-06-15T08:36:00.000</UPDDATE>

собственно вопрос
как преобразовать дату из xquery-запрoсa ?
спасибо
15 июн 15, 09:49    [17770734]     Ответить | Цитировать Сообщить модератору
 Re: xquery sql:column() convert date  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
ну как то так наверно

select idrow, 
xmlShow.query('
<ITEM>
{
for $D in ITEM/node() return $D}
<UPDDATE>
{substring(string(sql:column("UPDDATE")),9,2)}/{substring(string(sql:column("UPDDATE")),6,2)}/{substring(string(sql:column("UPDDATE")),1,4)
}
</UPDDATE>
</ITEM>') 
from TABLE
15 июн 15, 10:34    [17770952]     Ответить | Цитировать Сообщить модератору
 Re: xquery sql:column() convert date  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1692
michael R,
не извращайтесь

SET ANSI_WARNINGS ON
DECLARE @tbl TABLE (
       id INT,
       [date] DATETIME,
	  x xml
                   )
INSERT INTO @tbl (id, [date], x) VALUES (1, GetDate(), '<row/>')
INSERT INTO @tbl (id, [date], x) VALUES (2, GetDate()+1, '<row/>')

WITH X (ID, sdate, XmlData) AS (
    SELECT
          t.id,
          CONVERT(VARCHAR(20), t.[date], 103),
          t.x
    FROM @tbl t
)
SELECT
      X.ID,
      X.XmlData.query('<ITEM>
				     <UPDDATE>{sql:column("sdate") cast as xs:string ?}</UPDDATE>
				</ITEM>')
FROM X
15 июн 15, 11:32    [17771187]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить