【发布时间】:2014-05-11 05:37:22
【问题描述】:
我有保存 XML 数据的 XML 类型变量,我想从 XML 中检索数据,一切正常,但是当日期字段的 MIN 日期值 (0001-01-01T00:00:00) 比它给出的错误时。有没有办法消除这个错误?
错误信息
The conversion of a datetimeoffset data type to a datetime data type resulted in an out-of-range value.
--Giving Error
DECLARE @tmpXML XML
SET @tmpXML ='<FormSurveyorNoteXML><FormSurveyorNoteInfo><SurveyDate>2014-05-11T00:00:00+05:30</SurveyDate><InformationDate>0001-01-01T00:00:00</InformationDate></FormSurveyorNoteInfo></FormSurveyorNoteXML>'
SELECT
T1.TR1.value('InformationDate [1]', 'datetime'),
T1.TR1.value('SurveyDate [1]', 'datetime')
FROM @tmpXML.nodes('/FormSurveyorNoteXML/FormSurveyorNoteInfo') AS T1(TR1)
--Working Perfect, when date is not MIN
DECLARE @tmpXML1 XML
SET @tmpXML1 ='<FormSurveyorNoteXML><FormSurveyorNoteInfo><SurveyDate>2014-05-11T00:00:00+05:30</SurveyDate><InformationDate>1753-01-01T00:00:00</InformationDate></FormSurveyorNoteInfo></FormSurveyorNoteXML>'
SELECT
T1.TR1.value('InformationDate [1]', 'datetime'),
T1.TR1.value('SurveyDate [1]', 'datetime')
FROM @tmpXML1.nodes('/FormSurveyorNoteXML/FormSurveyorNoteInfo') AS T1(TR1)
如果您对处理 XML Select 中的 MIN 日期问题有任何建议或意见,请告诉我。
谢谢 苏雷什
【问题讨论】:
-
为什么你认为
0001-01-01T00:00:00是一个空值? -
Mikael,感谢您的纠正,是的,我认为它不是 NULL,而是它的最小日期范围。
标签: sql xml sql-server-2008 sqlxml