#realJSOP Ответов: 2

Sql server 2008R2-подавление параметра даты


Я пытаюсь сделать это в sql-запросе:

exec [dbo].[sp_MyStoredProc] '1513837107', '2017-04-31', 6000, 1.0


Хранимый процесс, о котором идет речь, имеет следующий прототип:

ALTER PROCEDURE [dbo].[sp_MyStoredProc]
(
	@identifier      nvarchar(50),
	@desiredEndDate  date,
	@newTarget       int,
	@newDiscount     float
)


Когда я пытаюсь использовать строку "exec", показанную выше, я получаю следующую ошибку:

Error converting data type varchar to date.

У меня никогда раньше не было такой проблемы. Почему я не могу этого сделать? Моя строка даты находится в одном из распознанных по умолчанию форматов ISO. Я в растерянности.

Вы не можете использовать вызов функции, когда вы exec'ing сохраненный proc в запросе.

Что я уже пробовал:

Я попробовал изменить @desiredEndDate параметр к a datetime и даже попробовал указать полный datetime строка. Кажется, ничего не работает.

Я также попробовал сделать datetime параметр а varchar и преобразование в магазине proc, но это не удалось с той же ошибкой.

CPallini

Вы использовали SET DATEFORMAT?
видеть:
https://docs.microsoft.com/en-us/sql/t-sql/statements/set-dateformat-transact-sql

#realJSOP

Это был глупый программистский трюк с моей стороны. В апреле всего 30 дней.

CPallini

В этом вы не одиноки. Я действительно проверил дату (искал неправильный формат).

2 Ответов

Рейтинг:
18

Richard Deeming

Цитата:
'2017-04-31'

Повторяй за мной:
Тридцать дней сентября, Апрель В июне и ноябре.

Нет никакого 31-гоул Эйприл, так что вы не можете преобразовать эту строку в date. 😁


#realJSOP

Да, официально я тупица. :)

CPallini

И я повторяю за Джоном.
5.

Рейтинг:
0

RickZeeland

Вы можете попробовать сначала создать переменную даты и передать ее:

declare @mydate as date = DATEFROMPARTS(2017,4,31)


Richard Deeming

Это все равно не изменит того факта, что в апреле всего 30 дней! :Д

Невозможно построить тип данных date, некоторые аргументы имеют значения, которые не являются допустимыми.

RickZeeland

Первоапрельская шутка :)