Ошибка с разным форматом даты между C # и T-SQL

#c# #tsql #datetime

#c# #tsql #дата-время

Вопрос:

У меня проблема с форматом datetime для C # и T-SQL.

  • Приложение C # использует формат DD.MM.YYYY HH.mm.SS
  • T-SQL использует формат MM DD YYYY HH.mm.SS

Очевидно, что T-SQL возвращает Error converting data type nvarchar to datetime. ошибку.

Есть ли способ проверить и преобразовать формат datetime на стороне SQL? Я бы хотел, чтобы T-SQL мог использовать формат DD.MM.YYY.

Спасибо.

Комментарии:

1. T-SQL не использует никакого форматирования строк — a DateTime является DateTime DateTime и не имеет никакого связанного с ним форматирования. Вы должны использовать либо параметризованные запросы, либо, если вам действительно нужна дата в строковом формате, используйте стандартный формат ISO-8601 YYYYMMDD ( YYYYMMDDTHH:MM:SS или, ,,)

Ответ №1:

Используйте параметризованные запросы, чтобы избежать такого рода проблем.

Когда вы создаете свой SQL в виде строки для передачи на SQL Server, вы не только сталкиваетесь с такого рода проблемами, но также можете подвергать себя SQL-инъекции.

С параметризованными запросами вы бы передавали DateTime значение, и библиотека DB поступила бы правильно.

Форматы не играют роли, поскольку они используются только для отображения.

Комментарии:

1. Я использую параметры: sCommand. Параметры. AddWithValue(«@datetime_from», DatetimeFrom);

2. @feronovak — Какой тип DatetimeFrom ? Можете ли вы опубликовать свой полный код?