#asp.net #sql-server
#asp.net #sql-сервер
Вопрос:
Bcz когда вы преобразуете эту строку в date, это не будет проанализировано должным образом. для этого вам нужно отправить строку даты в соответствии с форматом даты sql Server
ALTER PROCEDURE [dbo].[SprSelectScheduleForReAutoAllocate] --'<AADates><AADate AADateValue="2011-04-27 00:00:00.000" /><AADate AADateValue="2011-04-28 00:00:00.000" /></AADates>'
(
@Datexml xml
)
AS
BEGIN
EXEC sp_xml_preparedocument @xmlDoc output ,@DateXml
SELECT AADateValue
FROM OPENXML(@xmlDoc,'AADates/AADate',1)
WITH
(
AADateValue Datetime
)
xmlDocuments
EXEC sp_xml_removedocument @xmlDoc
End
Ответ №1:
SQL Server считывает значения даты и времени в соответствии со стандартом ISO 8601 в следующих двух форматах:
YYYY-MM-DDThh:mm:ss[.mmm]
YYYYMMDDThh:mm:ss[.mmm]
Форматируйте введенные данные таким образом, и SQL Server никогда не выдаст ошибку из-за несовместимости культуры или языка. Это независимый от культуры / языка способ передачи значения, если вы не можете передать его как действительное datetime
значение.
Комментарии:
1. Нет, в том-то и дело, что формат даты не меняется. Это литеральное значение, не зависящее от формата. Он ВСЕГДА будет успешно преобразован в допустимое значение datetime.
2. УСТАНОВИТЕ DATEFORMAT ydm; используя этот код, вы можете изменить формат даты
3. Вам нужно убедиться, что отформатированные даты в @Datexml не используют стандартный или встроенный формат, типичный для XML, поскольку SQL Server плохо понимает его, убедитесь, что вы придерживаетесь формата ISO 8601, если вам нужно передавать даты в виде строк в SQL Server или из него.