[英]Selecting data between 2 date values using SQL and VB.NET
我正在編寫以下 SQL 語句,以便使用 VB.NET 從特定表中獲取總和值。 但是,我不斷收到以下錯誤
itCode 是一個變量
Dim strSql As String = "SELECT sum(purchase_qty) FROM TB_STOCK WHERE it_code='" & itCode & "' AND added_date BETWEEN #07/21/2020 00:00:00# AND #07/21/2020 23:59:59#"
錯誤:System.Data.SqlClient.SqlException:“'00' 附近的語法不正確。”
我相當肯定 SQL 服務器不理解這樣的日期文字。 這適用於 Access,但不同的數據庫需要不同的語法。 您應該使用 yyyy-MM-dd 格式的文本文字:
"' AND added_date BETWEEN '2020-07-21 00:00:00' AND '2020-07-21 23:59:59'"
也就是說,我猜你將不得不在某個時候改變這些日期,所以你可能應該使用參數。 您絕對應該為it_code
值使用參數,例如
Dim sql = "SELECT sum(purchase_qty) FROM TB_STOCK WHERE it_code = @it_code AND added_date BETWEEN @added_date_start AND @added_date_end"
Dim command As New SqlCommand(sql, connection)
With command.Parameters
.Add("@it_code", SqlDbType.VarChar, 50).Value = itCode
.Add("@added_date_start", SqlDbType.DateTime).Value = myDate
.Add("@added_date_end", SqlDbType.DateTime).Value = myDate.AddDays(1).AddSeconds(-1)
End With
我同意 Rodney Ellis 關於不使用BETEWEEN
。 我會這樣做:
Dim sql = "SELECT sum(purchase_qty) FROM TB_STOCK WHERE it_code = @it_code AND added_date >= @added_date_start AND added_date < @added_date_end"
Dim command As New SqlCommand(sql, connection)
With command.Parameters
.Add("@it_code", SqlDbType.VarChar, 50).Value = itCode
.Add("@added_date_start", SqlDbType.DateTime).Value = myDate
.Add("@added_date_end", SqlDbType.DateTime).Value = myDate.AddDays(1)
End With
最后兩個示例都假設myDate
已經將時間歸零。 如果沒有,您可以使用myDate.Date
。
Dim strSql As String = "SELECT sum(purchase_qty) FROM TB_STOCK
WHERE it_code='" & itCode & "' AND added_date BETWEEN '2020-07-20 00:00:00' AND '2020-07-21 23:59:59'"
另外,不要使用 BETWEEN - https://www.mssqltips.com/sqlservertutorial/9316/sql-server-between-dates-issue/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.