簡體   English   中英

如何計算有效期VB.NET

[英]how to calculate expiration date VB.NET

 Dim readers As MySqlDataReader

    cn.Open()
    Dim query As String
    query = "Select * from tblmeds where expdate='" & DateTime.Now & "'"
    command = New MySqlCommand(query, cn)
    readers = command.ExecuteReader

    Dim count As Integer
    count = 0
    While readers.Read
       count = count + 1
    End While

        cn.Close()

        If count = 0 Then

           MsgBox("no expiration")
        Else
            MsgBox("medicine at risk")
        End If

這只是我編寫的代碼,但是它不起作用,因為如果count = 0,它不會直接進入while而是直接進行。 我也該如何對我的程序說“如果數據庫的到期日期接近我設置的月份”,對不起我的英語不好

您正在檢查您的任何項目的到期日期是否完全等於DateTime.Now的當前值。 此屬性還包含“時間”部分,因此,極不可能讓您擁有一個具有完全相同值的項目。

我認為您應該改用“比現在少的expexpate”,因此您的代碼應為

Dim readers As MySqlDataReader
cn.Open()
Dim query As String
query = "Select * from tblmeds where expdate<=@exp"
command = New MySqlCommand(query, cn)
command.Parameters.Add("@exp", MySqlDbType.DateTime).Value = DateTime.Now;
readers = command.ExecuteReader
Dim count As Integer
count = 0
While readers.Read
   count = count + 1
End While
cn.Close()
If count = 0 Then
    MsgBox("no expiration")
Else
    MsgBox("medicine at risk")
End If

相反,如果您要檢查到期日等於今天的日期,則使用的表達式是DateTime.Today而不是DateTime.Now。

還要注意,這是一個很好的習慣,不要將字符串連接起來形成sql查詢。 始終使用參數方法來避免解析和轉換錯誤。

為什么不使用時間戳記差異:

query = "Select * from tblmeds where TIMESTAMPDIFF(MONTH,`expdate`,CURRENT_TIMESTAMP())< 1"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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