【问题标题】:Compare dates in Visual Basic在 Visual Basic 中比较日期
【发布时间】:2019-08-01 01:31:47
【问题描述】:

我想将当前日期与我保存在数据库中的日期进行比较。当数据库上的日期距当前日期已过去 30 天时,我想显示一条消息,指出期限已过,客户需要付款。下面是我的代码

con = New SqlConnection
con.ConnectionString = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\user\Documents\visual studio 2015\Projects\Database1.mdf;Integrated Security=True;"

Dim READER As SqlDataReader
Dim date1 As Date

date1 = Convert.ToDateTime(Today)

Try
    For i As Integer = 0 To DataGridView1.Rows.Count - 1
        con.Open()

        COMMAND = New SqlCommand("SELECT distinct Surname,Money,Date from [Table] where money!=N'no'", con)
        READER = COMMAND.ExecuteReader

        While READER.Read()
            If date1 > READER(2).AddDays(30) Then
                MessageBox.Show("The customer N'" & TextBox1.Text & " has debts N'" & ComboBox3.SelectedItem)
            End If
        End While

        con.Close()
    Next

    con.Close()

Catch ex As SqlException
    MessageBox.Show(ex.Message)
Finally
    con.Dispose()
End Try

【问题讨论】:

  • 有什么问题?请edit您的问题告诉我们。
  • 它运行不正确。 if语句有问题。
  • READER(2) 应该是READER.GetDateTime(2)
  • 我改了,还是不行。

标签: sql-server vb.net date


【解决方案1】:

您不必要地使用Convert.ToDateTime 将已经是DateToday 转换为Date。另一方面,Reader(2) 返回一个 Object,您没有将其转换为 Date

但是为什么要在 VB 中进行这种比较呢?您将返回大量可能必须丢弃的记录。在 SQL 中进行比较。

SELECT DISTINCT Surname, Money, Date
FROM [Table]
WHERE Money != N'no' AND Date < (GETDATE() - 30)

【讨论】:

  • 我试过了,但是查询上显示的日期是1900-01-01
  • 1900-01-01 超过 30 天。但是如果没有看到你的实际数据就很难说。另外,你是如何显示日期的?我还假设您在 SQL-Server 中使用了日期类型而不是字符串类型。另请参阅Date and Time Data Types and Functions (Transact-SQL)
  • 我使用 varchar 类型作为日期。我会尝试改变它,看看它是否有效。
  • @PaulosXampos 将日期存储为字符总是一个坏主意,并且也将列命名为“日期”,因为它是一个保留字。
猜你喜欢
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 2012-02-28
  • 2021-11-05
  • 2016-03-04
  • 2013-12-14
相关资源
最近更新 更多