在一些系統中,有時我們需要按照某一個確定的時間,檢索一些數據。
我們經常會這樣寫:
strSQL = string.Format("select point from video_userconsume where userid=''{0}'' and roomsession={1} and state=7 and starttime=''{2}''", Session["userid"], roomsession, CurrentEndTime);
CurrentEndTime 是DataTime類型的對象,它是我們從數據庫中獲取的,以上語句是通過這個時間查找某條記錄。
但執行這條語句後,卻沒有查到數據(實際上這條記錄是存在的)。正確的寫法應該如下:
strSQL = string.Format("select point from video_userconsume where userid=''{0}'' and roomsession={1} and state=7 and starttime=''{2}''", Session["userid"], roomsession, CurrentEndTime.ToString("yyyy-MM-dd HH:mm:ss.fff"));
他們的主要區別在於 CurrentEndTime.ToString("yyyy-MM-dd HH:mm:ss.fff") 這句。
這是因為datetime數據在SQL Server 中 默認是以yyyy-MM-dd HH:mm:ss.fff 格式存取的,而C#中的DateTime轉換成字符串默認的格式是 yyyy-MM-dd HH:mm:ss ,因此要格式化成yyyy-MM-dd HH:mm:ss.fff 這種格式。