【问题标题】:Sorting a time value in a dataset对数据集中的时间值进行排序
【发布时间】:2011-03-18 17:33:32
【问题描述】:

在我当前的解决方案中,我正在使用 CONVERT 在我的数据库中转换一个 DateTime 值“时间”,因此它以 ##:##AM/PM 格式显示,并且我意识到 CONVERT 只接受任何数据类型并将其转换转换为 VarChar,或者在 C# 中转换为字符串。这使我的 Gridview 中的排序工作不正确。我正在对从存储过程返回的 DataSet 中的列进行排序。但是,它不是按 AM/PM 排序的,因为它是字符串文字,而不是 DateTime。

对时间值进行排序的最佳方法是什么?我应该在我的数据库中使用不同的数据类型,比如 TIME 吗?不同的 CONVERT 命令?我难住了!我不能使用 24 小时格式,这是唯一的限制。谢谢!

【问题讨论】:

  • 你不能也返回实际字段并使用它进行排序,但不显示它吗?
  • 我试试看,谢谢你的建议。

标签: sql datetime sorting time dataset


【解决方案1】:

一些想法:

  • 您能否使用 AM 01:23 / PM 01:23 格式 - 这样可以很好地排序。
  • 如果您可以从数据库中以 DATETIME 格式返回时间,但将日期设置为某个“恒定日期”(例如 2000-01-01 hh:mm),您几乎可以肯定在 GridView 上放置一个格式字符串列仅显示时间,同时仍启用按基础值排序。

【讨论】:

  • 我按照 Gaby 的建议做了,效果很好。我刚刚让数据库返回名为“实际时间”的额外列并将排序表达式设置为该列。再次感谢 StackOverflow!
  • +1,保留日期时间字段原样并在 c# 中格式化以供显示也是我的下一个建议。peterkellner.net/2006/05/24/…
【解决方案2】:

我使用刻度:http://www.codeproject.com/KB/database/DateTimeToTicks.aspx 或者(如果可能的话)DateTime - 并在我的网格中处理它。

您可以添加一个附加列,其中包含隐藏在您的 gui 中但用于排序的日期/转换日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-19
    • 2016-09-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    相关资源
    最近更新 更多