簡體   English   中英

使用 SQL 和 VB.NET 在 2 個日期值之間選擇數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM