Проблема преобразования даты и времени в SQL Server - PullRequest
0 голосов
/ 07 июля 2011

Мне нужно вставить значение datetime в столбец datetime в SQL Server 2005

Я передаю переменную DateTime со страницы .aspx

Что необходимо вставитьв столбце.

Пример:

Table(date datetime)

@sql = 'insert into Table (date) values('+@datetime+')'
exec(@sql)

получение сообщения об ошибке преобразования.

Любая идея, как это сделать.

Очень срочно.

Спасибо.

Ответы [ 6 ]

1 голос
/ 07 июля 2011

Вам нужны разделители строк - в T-SQL это двойные одинарные кавычки.

SET @sql = 'insert into Table (date) values('''+@datetime+''')'
exec(@sql)

Однако, в зависимости от формата строки, он все равно может завершиться ошибкой.По любой причине вы строите строку SQL, склонную к внедрению SQL, а не просто говорите:

INSERT Table(date) SELECT @datetime;

?

1 голос
/ 07 июля 2011

Добавить экранированные одинарные кавычки вокруг значения datetime.Обычно они передаются в виде строк.

Проверьте, работает ли это:

@sql = 'insert into Table (date) values('''+@datetime+''')'
exec(@sql)
0 голосов
/ 07 июля 2011
Declare @datetime datetime
Set @datetime=GetDate()

Declare @sql nvarchar(1000)
Declare @param nvarchar(1000)
Set @param='@datetime datetime'

SET @sql = 'insert into Table (date) values(@datetime)'

exec sp_executesql @sql,@param,@datetime

Вы должны изучить SQL инъекции для динамических запросов.

0 голосов
/ 07 июля 2011

Помимо других предложений с разделителями и несоответствиями в скобках, Date является зарезервированным ключевым словом, вместо этого используйте [Date].

0 голосов
/ 07 июля 2011

Попробуйте внести это небольшое изменение в ваше заявление SQL

@sql = "insert into Table (date) values ('"+ @datetime + "')"
0 голосов
/ 07 июля 2011

Убедитесь, что ваш запрос / хранимая процедура ожидает получения параметра в виде переменной datetime (не varchar(20) или чего-либо подобного), и убедитесь, что ваш код ASP.Net передает значение в виде datetime значение также.

В основном, для лучшей обработки даты и времени, конвертируйте их из строк в даты и время как можно раньше, принимая их в качестве входных данных (например, конвертируйте их в соответствующее событие в вашем коде в ASP.NET).сохраняйте их как datetime при каждой передаче их в / из базы данных и переводите их обратно как строки как можно позже при выводе их (например, в коде представления для asp.net mvc или при присваивании свойству Text ASP.Netконтроль)

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