我正在使用C#,MVC 4,SQL Azure。SQL Azure:在兩個日期之間獲取數據,日期爲字符串
背景:我正在用DB編寫一個網站,用戶在網站上的每個動作都將作爲用戶活動保存在我的數據庫中。
每一行,因爲這些列:
- ID
- 日期
- 用戶名
- 說明
現在到了我的問題,在我的國家,我們這樣寫日期: DD/MM/YYYY
示例:29/11/2014
。
奇怪我知道,但我需要這種格式。
我嘗試了一千種方法將INSERT
日期值轉換成我的數據庫(SQL Azure),它們的格式不同,而且沒有任何東西可以工作,而且微軟在那裏得到了3種類型的Date,它非常非常混亂,所以我也只是設置日期字段作爲一個字符串,我組裝這樣的日期:
string date = DateTime.Now.Day.ToString() + "/"
+ DateTime.Now.Month.ToString() + "/"
+ DateTime.Now.Year.ToString() + " "
+ DateTime.Now.Hour.ToString() + ":"
+ DateTime.Now.Minute.ToString();
現在我想與查詢使用兩個日期「之間」這樣的數據:
SELECT [ID]
,[Date]
,[User]
,[Description]
FROM [dbo].[ActivityLog]
WHERE [Date] BETWEEN 03/09/2014 AND 04/09/2014;
我得到這個錯誤:
將nvarchar值'3/9/2014 21:3'轉換爲數據類型int時轉換失敗。
我的日期看起來像這樣的DB:
3/9/2014 21:3
如果有人能指導我這個槽......謝謝
這是我的代碼:
public static void UpdateLog(string userName, string description)
{
try
{
string guid = Guid.NewGuid().ToString();
string date = DateTime.Now.Day.ToString() + "/" + DateTime.Now.Month.ToString() + "/" + DateTime.Now.Year.ToString() + " " + DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString();
string query = "INSERT INTO ActivityLog VALUES('" + guid + "' , '" + date + "' , '" + userName + "' , '" + description + "')";
AdoHelper.ExecuteNonQuery(query);
}
catch (Exception ex)
{
throw ex;
}
}
更新:
我改變了我的代碼如下:
string query = "INSERT INTO ActivityLog VALUES('" + guid + "' , '" + DateTime.Now + "' , '" + userName + "' , '" + description + "')";
現在,當我看着我的數據庫我看到這一點:
03-Sep-14
酷似我的電腦是在右下角寫(托盤圖標那裏)。
但是,這是一個問題,因爲其他人進入網站,並在他的計算機上他寫的日期不同,所以他會插入數據庫不同的格式,我能做些什麼來解決這個問題?世界標準時間 ?
我會建議做一些文化和字符串格式的研究:http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx和http:// msdn .microsoft.com/en-us/library/vstudio/bz9tc508(v = vs.100).aspx – 2014-09-03 18:50:24
不要將日期轉換爲字符串。而是將日期作爲參數傳遞給查詢。顯示你的代碼,我可以告訴你如何去做。 – 2014-09-03 18:54:18
'將nvarchar值'3/9/2014 21:3'轉換爲數據類型int.'時轉換失敗。日期字段的數據類型是什麼。錯誤消息告訴你它期望一個int,因爲日期是在數據庫中定義爲'TimeStamp'的日期。 – MethodMan 2014-09-03 18:54:44