Функция SQLServer INSERT getdate () с использованием параметров - PullRequest
0 голосов
/ 09 июля 2011

Каков предпочтительный метод добавления текущей даты / времени в таблицу SQL Server с помощью команды INSERT и executetenonquery?Я ожидаю что-то вроде ...

        cmd.Parameters.Add("@theDate", SqlDbType.VarChar, 20)
        cmd.Parameters("@theDate").Value = "getdate()"

Ответы [ 5 ]

2 голосов
/ 09 июля 2011

Прежде всего, вы должны использовать тип данных DateTime для столбца.Во-вторых, в этом столбце вы можете использовать ограничение DefaultValue = getdate (), поэтому оно определяется только в БД.Приложение не нужно его вставлять.

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

Параметр даты / времени НЕ нужен.

Каждый раз, когда хранимая процедура вызывается, вы просто обновляете поле даты / времени на уровне сервера.

Если вы хотите иметь возможностьобновить поле даты / времени до значения, ДРУГОГО, чем текущее время, после чего вы можете добавить дополнительный параметр в хранимую процедуру;таким образом, ваш сервер может обновить его до getdate (), когда он равен нулю, или вы можете передать его из приложения, когда это должно быть определенное время.

Причина, по которой Томас подчеркнул важность установки времени вуровень сервера из-за часовых поясов и других факторов.

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

Как насчет ...

cmd.Parameters.Add("@theDate", SqlDbType.DateTime)
cmd.Parameters("@theDate").Value = DateTime.Now
1 голос
/ 09 июля 2011
cmd.Parameters("@theDate").Value = Now()
0 голосов
/ 09 марта 2012

Я бы посмотрел, можно ли поместить текст current_timestamp непосредственно в код sql и полностью пропустить параметр. Если вы не можете, тогда пришло время просто использовать DateTime.Now.

...