【问题标题】:How to fetch records by time with ASC order?如何使用 ASC 顺序按时间获取记录?
【发布时间】:2018-03-26 12:07:10
【问题描述】:

我是 C# WinApp 的新手,我正在研究它。在 Winform 中,我想从 MS Access 数据库中获取数据到 DataGridView。我写了一个查询来获取按时间升序登录的员工记录,但它没有按正确的顺序显示。

首先让我告诉你我正在使用的参数。 表字段是 MS Access 中的日期/时间,格式是中时间。时间在字段中记录为“09:15 AM”。日期和时间在不同的字段中。 查询是...

"Select EmpName, EmpDesig, EmpTime from LogReg Where TheDate=' "+DateTime.Today.To.ShortDateString()+" ' Order By EmpTime ASC

时间字段中的输出结果按升序显示时间,但显示为'30/12/1899 05:30:00' 我只希望它为"05:30 PM"。在数据表中时间保存为"05:30 PM"才显示为'30/12/1899 05:30:00'

【问题讨论】:

    标签: c# sorting datetime ms-access


    【解决方案1】:

    将日期存储和使用为日期值,而不是字符串:

    "Select EmpName, EmpDesig, EmpTime from LogReg Where TheDate = #"+ DateTime.Today.ToString("yyyy'/'MM'/'dd") + "# Order By EmpTime ASC"
    

    或者,为什么不使用今天日期的内部函数:

    "Select EmpName, EmpDesig, EmpTime from LogReg Where TheDate = Date() Order By EmpTime ASC"
    

    【讨论】:

    • 感谢您的回复。先生,我的问题是时间字段(日期和时间保存在不同的字段中)。日期显示正确。存储在 db 中的时间数据为“05:30 PM”,但显示为“30/12/1899 05:30:00”。我应该在查询中进行什么更改以获得数据库时间,'05:30PM'?顺便说一句,数据集是在 DataGridView 中获取的。
    • 这似乎是正确的。 1899-12-30 是“零”日期值。因此,在显示值时设置格式,例如 h:MM。
    • 了解 h:MM 但是在我的查询中添加 h:MM 的位置以及如何添加?任何其他功能,如 DateTime 或其他需要?
    • 查询检索数据。在您的表单中,您应用所需的格式。
    【解决方案2】:

    如果您还没有将检索到的值存储在日期时间变量中。 然后,您可以格式化您想要的显示方式。以下将显示您想要的格式。

    DateTime dateValue = Convert.ToDateTime(someValuefromDB);
    dateValue.ToString("hh:mm tt")
    

    从查询中你可以达到同样的效果

    select CONVERT(varchar(15),CAST(YourColumn AS TIME),100) from YourTable
    

    【讨论】:

    • 它不工作。记录可能是 5、10、25 或更多,并且显示在 DataGridView 中。所以,我需要一个循环,可以将此日期时间转换为时间并显示在所需的列中。另一种方式应该是查询中的函数只从 db 中获取时间并显示在 DGV 列中。
    • 在循环中使用上面的代码和数据库中的值。关键是当您将值分配给数据表时,只需使用 value.ToString("hh:mm tt")。我正在编辑上面的答案以从查询中获得相同的结果。假设您使用的是 MSSQL
    • 没有。正如我的帖子中提到的,我正在使用带有 MS Access 数据库的 C# WinApp。 varchar 不存在。 :)
    • 使用 dateValue.ToString("hh:mm tt") 格式怎么样?你试过了吗?
    • 值来自 db 到数据集中。我的要求是将时间与日期和时间分开,并仅显示上午/下午的时间。我从 db 得到的值是 dsEmpLogIn.Tables[0].Rows[0].ItemArray[2].ToString()。 ToString("hh:mm tt") 将不起作用。我已经尝试过 Convert、DateTime、TryParse 等,但一切都会引发一些异常。
    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多