【问题标题】:Query with Date and Time查询日期和时间
【发布时间】:2018-05-10 17:46:25
【问题描述】:

在我的数据库中,使用SQL Server 2014,有一个名为TableOberge 的表和一个名为Date-InDate 类型的列,以及一个名为Hour-InTime(7) 类型的第二列。 通过此查询,我想在 DatagridView1 中显示已达到其日期和时间的记录...但我未能正确显示它们。

请帮忙:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dbb_Connection()
    Using InfoAdapter As New SqlDataAdapter("SELECT * FROM TABLEOBERGE WHERE [DATE_IN] >= CONVERT(date, GETDATE()) AND [HOUR_IN] >= convert(time(0),getDate())", StrCon)
        InfoTable = New DataTable
        InfoAdapter.Fill(InfoTable)
        DataGridView1.DataSource = InfoTable
    End Using
End Sub

我的添加记录代码:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dbb_Connection()
    Using Command As New SqlCommand With {.Connection = StrCon}
        With Command.Parameters
            Command.CommandText = "INSERT INTO [TABLEOBERGE] ([ID], [FIRSTNAME], [PHONE], [ADRESSE], [DATE_OUT], [HOUR_OUT], [DATE_IN], [HOUR_IN]) VALUES (@ID, @FIRSTNAME, @PHONE, @ADRESSE, @DATE_OUT, @HOUR_OUT, @DATE_IN, @HOUR_IN)"
            .AddWithValue("@ID", SqlDbType.Int).Value = TextBox1.Text
            .AddWithValue("@FIRSTNAME", SqlDbType.NVarChar).Value = TextBox2.Text
            .AddWithValue("@PHONE", SqlDbType.NVarChar).Value = TextBox3.Text
            .AddWithValue("@ADRESSE", SqlDbType.NVarChar).Value = TextBox4.Text
            .AddWithValue("@DATE_OUT", SqlDbType.Date).Value = TextBox5.Text
            .AddWithValue("@HOUR_OUT", SqlDbType.Time).Value = TextBox6.Text
            .AddWithValue("@DATE_IN", SqlDbType.Date).Value = TextBox7.Text
            .AddWithValue("@HOUR_IN", SqlDbType.Time).Value = TextBox8.Text
        End With
        If StrCon.State = ConnectionState.Closed Then StrCon.Open()
        If Command.ExecuteNonQuery() = 1 Then
            MsgBox("SUCCED ADD", MsgBoxStyle.MsgBoxRtlReading, "SUCCES")
        Else
            MsgBox("ERROR FATAL", MsgBoxStyle.MsgBoxRtlReading, "ERROR")
        End If
        StrCon.Close()
    End Using
End Sub

http://www.vbforums.com/showthread.php?862331-Display-record-with-condition-of-date-and-time 和这里 https://www.developpez.net/forums/d1851524/dotnet/langages/vb-net/afficher-records-conditions-date-time/

【问题讨论】:

  • 您好,我添加了一些相关标签,以便您的帖子具有更高的知名度。您是否尝试过在 SSMS 中运行查询以确认返回的结果是您所期望的?
  • but I have failed to display them correctly.
  • 附注。如果您在日期和时间中使用单个字段而不是将它们分成 2 个字段,IMO 您的设计会更好。DateTime2(7) 类型的 DateIn 非常适合。如果有必要,有许多 SQL 函数允许您严格根据时间或日期进行过滤。它使编写上述查询变得更简单。
  • 由于我的查询失败,没有任何反应并出现在 Datagriview1 中。如果我只像这样更改查询(SELECT * From TableOberge,StrCon),我的表中的所有记录都出现在我的 DataGridView1 中
  • 请求将如何处理(DateTime2 (7))

标签: sql sql-server vb.net sql-server-2014


【解决方案1】:

我认为您可能将相等比较器转错了方向。如果您正在查找过期日期(即过去),则该日期应小于当前日期。

SELECT * 
FROM TABLEOBERGE 
WHERE [DATE_IN] <= CAST(getdate() as Date) AND [HOUR_IN] <= CAST(getDate() AS TIME)

如果您在日期和时间中使用单个字段而不是将它们分成 2 个字段,IMO 您的设计会更好。DateTime2(7) 类型的 DateIn 将是一个不错的选择。如果有必要,有许多 SQL 函数允许您严格根据时间或日期进行过滤。它使编写上述查询变得更简单。

SELECT * FROM TABLEOBERGE WHERE [DATE_IN] <= GETDATE() 

【讨论】:

  • 非常感谢我开始学习你的超级课程。我只剩下一个问题了。 sqldatatypes 将如何在此代码中添加记录 .. 在我的第一个更新帖子中
  • @ABIDINE - 也不允许改变问题。如果您有新问题,应将其作为新问题发布,而不是稍后将其添加到现有问题中。
  • @ABIDINE - 如果以上回答了您的原始问题,请考虑使用答案左侧的复选标记标记答案。
  • 谢谢亲爱的伊戈尔 .. 不,我只是想知道这个数据类型与您的查询有什么关系..( .AddWithValue("@DATE_IN", SqlDbType.Date).Value = TextBox7.Text .AddWithValue("@HOUR_IN", SqlDbType.Time).Value = TextBox8.Text)
猜你喜欢
  • 1970-01-01
  • 2015-04-16
  • 2019-04-27
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 2011-07-01
  • 2012-10-14
  • 1970-01-01
相关资源
最近更新 更多