Вставьте дату и время сервера, используя SqlCommand - PullRequest
2 голосов
/ 31 августа 2009

У меня есть SqlCommand, который вставляет дату и время в столбец, используя SqlParameter. В настоящее время я использую DateTime.Now в качестве значения этого параметра.

Я полагаю, что это добавит дату и время на ПК пользователя, что не соответствует.

Как мне изменить это так, чтобы дата-время сервера базы данных была вставлена?

EDIT:

Я должен был дать понять, что это было только для вставок

Ответы [ 5 ]

6 голосов
/ 31 августа 2009

Не передавать параметр для текущей даты; получить SQL Server для его генерации.

SQL для выполнения того, что вы описали, - GETDATE(), хотя вы можете рассмотреть возможность использования GETUTCDATE(), поскольку он будет вести себя лучше в отношении изменений часового пояса (и перемещения сервера!)

Подробнее см. MSDN .

5 голосов
/ 31 августа 2009

Это строго для ВСТАВКИ? Или для обновлений тоже?

Если это только для INSERT, вы можете объявить ограничение DEFAULT для столбца DATETIME на стороне SQL Server, а затем просто не вставлять значение со стороны клиента - таким образом, используя настройки по умолчанию для сервера.

В SQL:

 ALTER TABLE YourTable 
   ADD CONSTRAINT DF_YourTable_YourColumn
     DEFAULT (GETDATE()) FOR YourColumn

и затем в своей команде SQL, просто не упоминайте «YourColumn» и не указывайте его значение - сервер будет использовать getdate() для получения текущей даты / времени на сервере.

Марк

0 голосов
/ 31 августа 2009

Вы можете использовать хранимую процедуру и GETDATE (),

имя_таблицы (№: int, имя: varchar (40), дата-время-дата)

Хранимая процедура

CREATE PROCEDURE  AddRec
@no int,
@name varchar(40)
AS
insert into tableName
 values (@no,@name,getdate())
RETURN

Код для выполнения хранимой процедуры

SqlConnection cn=new SqlConnection("Your_Cn_Str");
SqlCommand cmd=new SqlCommand();
cmd.CommandText="AddRec";
cmd.CommandType=CommandType.StoredProcedue;
cmd.Connection=cn;

cmd.Parameters.AddWithValue("@no",10);
cmd.Parameters.AddWithValue("@name","Foo");

cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
0 голосов
/ 31 августа 2009

В этом случае не передавайте значение datetime в качестве параметра. Вместо этого используйте функцию GetDate () и вставьте этот результат в таблицу

вставка в значения X (Id, Col1, Col2) (1, «Customer1», GetDate ())

Надеюсь, это поможет

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