2015-06-03 77 views
-1

我有一個表「user_info」與字段和數據類型。從ASP.NET代碼更新表MS SQL的日期時間值

USER_ID || user_reg_date [datetime] NULL DEFAULT (getdate())|| user_next_visit_date [日期時間] NULL

這裏user_reg_date是默認值,所以該格式是:: 2015年6月2日12:17:12.307

的領域,user_next_visit_date我已經更新它來自ASP.NET代碼,格式與user_reg_date相同。

string queryString = "UPDATE user_info SET user_next_visit_date = ??? 
    WHERE user_id ='" + user_id + "'"; 

如何設置user_next_visit_date [日期時間]的值與當前日期時間在格式相同user_reg_date。我經常遇到從ASP.NET到數據庫插入日期時間值的問題。

+1

這是毫秒你有問題嗎?由於user_next_visit_date使用datetime,格式爲YYYY-MM-DD HH:MI:SS。所以你最後需要看看最後的決定。否則,你可以(如果你想毫秒)看看這個,http://sqlhints.com/2014/02/23/how-to-get-time-hour-minute-second-and-millisecond-part - 從-日期時間,在-SQL服務器/(你只需要添加「:MMM」 – WeeklyDad

回答

3

DateTime沒有格式。更新它很容易,因爲蛋糕與參數化查詢:

SqlCommand query = new SqlCommand(); 
query.Connection = ... 

// Parameters start with @ 
string queryString = "UPDATE user_info SET user_next_visit_date = @someDateVar WHERE [email protected]"; 
query.CommandText = queryString; 

// Date parameter 
SqlParameter dtPar = new SqlParameter("@someDateVar", SqlDbType.DateTime, 0); 
dtPar.Value = DateTime.Now; // or any DateTime you have 
query.Parameters.Add(dtPar); 

// Id parameter 
SqlParameter idPar = new SqlParameter("@userId", SqlDbType.Int, 0); 
idPar.Value = user_id; 
query.Parameters.Add(idPar); 

// Execute 
query.ExecuteNonQuery(); 

這有副作用,SQL注入不再可能。

事實上,我用這個附加一個參數一部分,所以經常我會推薦的快捷方式,使它們oneliners。

+0

如何更新** ** user_next_visit_date當前DATETIME值 – user4221591

+1

你應該總是使用參數化查詢,而不是建立SQL字符串。這個答案的作者說,它可以防止SQL注入,這也意味着你不必擔心如何格式化各種類型的值,以便SQL Server能夠理解它們;如果你想從服務器運行這個代碼,你可以使用'DateTime.Now',並將其作爲參數傳遞,但如果你想要SQL Server的日期和時間,可以使用SQL Server函數'getdate()'或'sysdatetime()'返回當前日期和時間分別爲SQL DateTime或DateTime2 –

+0

@ user4221591我想我的例子le顯示了你想要做的事情:它用'DateTime.Now'更新'user_next_visit_date' – Alexander

0

您可以使用日期時間對象,並使用類似這樣的

DateTime dt = DateTime.now; 

此dt的對象,你可以在你的update語句傳遞。

1

要與當前的日期更新只需使用getdate()

string queryString = "UPDATE user_info SET user_next_visit_date = getdate() WHERE " ... 

記住parametrise您的查詢在其他的答案建議。