首页 > 解决方案 > 还剩 5 天时,有没有办法显示临近的 DueDate 客户?VB.net mysql

问题描述

这个表..

我想在客户状态中显示以下内容到即将到期的日期,而他们的到期日只剩下 5 天了。我从互联网上搜索了很多,但我仍然迷路了。我尝试了不同的查询,但仍然没有得到我想要的

这是我的代码:

Public Sub fillNearDue()

    Dim dbDataSet As New DataTable
    Dim sda As New MySqlDataAdapter
    Dim bSource As New BindingSource
    Dim todayD As String = DateTime.Now.ToString("yyyy-dd-MM")
    connect()

    'Dim cmd1 As New MySqlCommand("SELECT *, IF(now() > dueDate, 'EXPIRED', '') AS Expiry FROM payments", con)
    '  Dim cmd1 As New MySqlCommand("if(dueDate-now()*-1 <= 5, 'EXPIRED','') AS Expiry FROM payments", con)
    'Dim cmd1 As New MySqlCommand("SELECT *  FROM payments WHERE TIMESTAMPDIFF(day,'dueDate',CURRENT_TIMESTAMP()) < 1", con)
    Dim cmd1 As New MySqlCommand("Select *, DATEDIFF(dueDate,now() ) as Days from payments where DATEDIFF( dueDate,now()) < 5", con)
    sda.SelectCommand = cmd1


    sda.Fill(dbDataSet)
    bSource.DataSource = dbDataSet
    GRDnearDue.DataSource = bSource

    disconnect()

End Sub

标签: mysqlvb.net

解决方案


您的选择将为您提供 5 天内到期的所有 pymenst,以及今天已经到期的所有付款。因此,将 DATEDIFF 天数减少为仅正数,您将获得所需的所有数据。

尝试

Dim cmd1 As New MySqlCommand("Select *, DATEDIFF(dueDate,now() ) as Days 
     from payments where DATEDIFF( dueDate,now()) >= 0 AND DATEDIFF( dueDate,now()) <= 5", con)

您可以在 where 子句中添加所有已支付的款项,这将进一步减少行数


推荐阅读