Я на самом деле не вижу точно, что вы видите Я получаю значение 1900-01-01T00:00:00
, когда CreatedOn is null
.
Я полагаю, это связано с тем, что CreatedOn - это datetime. Если XML проверен на соответствие XSD, пустые теги для xs: dateTime недопустимы.
Чтобы получить то, что вы хотите, вы можете сделать это так.
isnull(convert(varchar(19), Comments.CreatedOn, 126), '') 'Date',
Результат (для меня) <Date />
, когда CreatedOn is null
Редактировать 1 Пустой тег комментария с пустыми тегами, когда нет комментариев
SELECT
Board.BoardId 'Board/BoardId',
Board.BoardTitle 'Board/Title',
ISNULL(Board.BoardDesc,'') 'Board/Desc',
(
SELECT
isnull(convert(varchar(10), Comments.CommentId), '') 'CommentId',
isnull(Comments.Comment, '') 'Comment',
isnull(convert(varchar(19), Comments.CreatedOn, 126),'') 'Date'
from US_Board Board2
left outer join us_boardcomments comments
on comments.boardId = Board2.boardid
where Board2.boardid = Board.boardid
for xml path('Comment'),type
)
FROM US_Board Board where boardId = '1'
for xml path('Board')
Результат
<Board>
<Board>
<BoardId>1</BoardId>
<Title>Introduction to modal popup control</Title>
<Desc>The ModalPopup extender allows you to display content in an element that</Desc>
</Board>
<Comment>
<CommentId />
<Comment />
<Date />
</Comment>
</Board>