Функция SQLServer INSERT getdate() с использованием параметров

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

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

5 ответов

Решение

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

cmd.Parameters.Add("@theDate", SqlDbType.DateTime)
cmd.Parameters("@theDate").Value = DateTime.Now

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

cmd.Parameters("@theDate").Value = Now()

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

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

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

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

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

Другие вопросы по тегам