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