【问题标题】:How can I chose the latest date in a table using query如何使用查询选择表中的最新日期
【发布时间】:2019-11-21 23:40:06
【问题描述】:

这就是我所做的,这是错误的。 我的日期字段存储为 (MM/DD/YYYY)

Select Name,Family,ID,max(Dates) from MyTable group by name,family

【问题讨论】:

  • 查看 DATE() 函数。
  • 我做到了,但我仍然不知道如何从表格中选择最新日期。
  • 我只需要一个示例查询,显示如何检索最后一个日期,
  • 请编辑您的问题以显示您的确切查询。看起来您正在使用原始的 dates 列。您需要使用DATE()函数将日期字符串转换为日期对象。
  • edit你的问题

标签: c# sqlite


【解决方案1】:

如果 DatesTEXT 列,其中包含存储为 MM/DD/YYYY 的值,则调用 MAX() 它不会产生最新日期,因为 Sqlite 会对列进行字母数字排序,首先按月份排序。

您需要将 Dates TEXT 值正确转换为 DATE 值,然后当您对 DATE 值调用 MAX() 时,Sqlite 将按照您期望的方式排序并生成最新的日期值。

可以使用 DATE() 创建日期值,但 DATE() 的参数需要是 ISO 格式的日期字符串(YYYY-MM- DD)。因此,我们需要使用 substr() 解析出现有的 TEXT 字符串值,然后从解析出的日期部分组件中构建一个 ISO 日期,最后将该 ISO 日期作为参数传递给 DATE()。

但是,这样做的副作用是查询输出现在将以 ISO 格式显示最大日期,因此如果您需要原始格式的日期,则需要单独包含它。

所以,是这样的:

SELECT Name, Family, ID, Dates, MAX(DATE(SUBSTR(Dates, 7, 4) || '-' || SUBSTR(Dates, 1, 2) || '-' || SUBSTR(Dates, 4, 2))) FROM MyTable

【讨论】:

  • @SamCanyon 不客气。随意将答案标记为已回答,这就是它的工作原理。
  • 我不知道该怎么做。如果你告诉我我可以做到。
  • 单击您将在此答案的投票计数下方看到的复选标记图标。
猜你喜欢
  • 2017-10-12
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 2021-06-18
  • 1970-01-01
相关资源
最近更新 更多