我正嘗試使用asp.net創建一個拍賣網站。我的拍賣的開始日期&時間和結束日期&時間存儲在我的SQL Server 2008 R2數據庫作爲日期時間類型。我正在使用vb.net。我試圖創建一個select語句,在該語句中我可以查詢相對於當前日期和時間的日期和時間部分(以便僅顯示當前正在進行的拍賣)。我可以使用Date.Now函數成功查詢日期部分,但時間給了我一個麻煩。 DateAndTime.Now不起作用。我甚至試圖分開數據庫中的時間和日期,但我仍然無法獲得有效的查詢。從vb.net中的日期時間sql服務器類型操縱日期和時間
這裏有兩個代碼例子,我已經試過:
Dim Connection As SqlConnection = New SqlConnection(...)
Dim Command As SqlCommand = New SqlCommand()
Dim _Reader As SqlDataReader
Command.Connection = Connection
Command.CommandText = "Select ... from Auctions where Start_Date_Time > " & DateAndTime.Now & " And End_Date_Time > " & DateAndTime.Now
藉助於此START_DATE_TIME和END_DATE_TIME是DateTime類型。
和:
Dim Connection As SqlConnection = New SqlConnection(...)
Dim Command As SqlCommand = New SqlCommand()
Dim _Reader As SqlDataReader
Command.Connection = Connection
Command.CommandText = "Select ... from Auctions where Start_Date >= " & Date.Today & "Start_Time <= " & DateAndTime.Now.ToLongTimeString & " And End_Date >= " & Date.Today & " And End_Time <= " & DateAndTime.Now.ToLongTimeString
藉助於此START_DATE日期和結束日期是Date類型,並START_TIME和END_TIME的類型是時間(7)。
任何建議表示讚賞, 在此先感謝
使用參數化查詢。不要按字符串傳遞日期和時間。你也可以考慮使用TSQL'getdate()'和'dateadd'函數,而不是根據當前時間傳遞參數。 –
@Martin關於使用T-SQL值的唯一警告是服務器可能位於不同的時區。一旦英國數據中心的一個應用程序在弗吉尼亞州的數據庫中寫入數據,我們就遇到了一個問題,並且沒有人會同意該應用程序應該顯示的內容或應該存儲在數據庫中的內容。從那以後,我一直在爭取在UTC部署SQL和應用服務器,但如果應用程序需要應用服務器的日期/時間... –