2012-06-20 3 views
0

Я хотел, чтобы установить текущее время, я моя база данныхНабор даты и времени в SQL

Моя колонка представляет собой формат «DATETIME»

Моя вставка SQL выглядит следующим образом.

// Set last login 
DateTime date = DateTime.Now; 
string insertSQLDet = "INSERT INTO [dbo].[user] (last_login) VALUES (" + date + ") WHERE user_id=" + user_id; 

Но я ошибаюсь, заявляя, что у меня неправильный рядом с «ГДЕ». Кто-нибудь может понять, что случилось?

+0

От _ "желая установить" _, я полагаю, вы ищете ** обновите ** свои записи. В этом случае вам лучше выбрать оператор обновления вместо инструкции insert. Кроме того, вам могут понадобиться одинарные кавычки (') вокруг вашей даты, чтобы заставить ее работать. Лучше всего было бы использовать SQL, основанный на параметрах, как указано в некоторых ответах. – Aziz

ответ

2

Мое предположение! вы хотите обновить поле last_login, поэтому используйте оператор UPDATE и всегда используйте параметры.

DateTime date = DateTime.Now; 
string sql = "UPDATE [dbo].[user] SET [email protected] WHERE [email protected]"; 
using(SqlCommand cmd=new SqlCommand(sql,conn)) 
    { 
    cmd.Parameters.Add("@date",SqlDbType.DateTime).Value=date; 
    cmd.Parameters.Add("@userid",SqlDbType.VarChar,20).Vaule=user_id; 
    conn.Open(); 
    cmd.ExecuteNonQuery(); 
    conn.Close(); 
    } 
+0

Большое вам спасибо! Я даже не думал об этом. :) – dpDesignz

1

INSERT заявления не допускают предикатов, потому что вы ничего не выбираете. Вы имели в виду выпустить заявление UPDATE?

"UPDATE [dbo].[user] SET last_login = " + date + " WHERE user_id = " + user_id 

Кроме того, я настоятельно рекомендую вам use parameters to provide values.

1

Какие СУБД вы используете? MSSQL или MySQL? вам не нужно передавать параметр, если вы хотите получить дату и время сервера. есть функция, которая автоматически получит дату и время сервера.

для MSSQL Select GetDate() в качестве ServerDate для MySQL Select TIMESTAMP как ServerDate

0

Вы не выбираете строки из любой другой таблицы. Вы вручную указываете значения, почему вы не можете использовать предложение where в этой ситуации.

Если вы пытаетесь обновить, то следующий запрос будет работать для вас,

"UPDATE [dbo].[user] SET last_login = " + date + " WHERE user_id = " + user_id 
0

Вам не нужно проходить DateTime в качестве параметра. Вы можете просто выбрать его на сервере внутри оператора insert. Также используйте параметризованные запросы для привязки ваших параметров.

string qry="INSERT INTO [dbo].[user] (last_login) VALUES ((SELECT CURRENT_TIMESTAMP)) WHERE [email protected]" 
Смежные вопросы