SQLite and STRFTIME



在我的SQLite数据库中,我有一个包含分钟、秒和厘米秒的时间字段:

 00:01:100

我想选择具有以毫秒为单位的最大值的行,并找到strftime函数。我正在尝试:

  SELECT MAX(strftime("%M:%S:%SSS", field)) FROM table;

但它不起作用。

因为这不在允许的格式列表中,所以必须首先对其进行编辑,以便支持它。

然后运行strftime功能

SELECT MAX(strftime("%H:%M:%f", "00:" || substr(field,1,3) || replace(':','.',substr(field,4)))) FROM table;

这个

应该将不起作用

编辑

所以,更新。为什么它不起作用:

当您已经有一种格式的时间,并且希望将其转换为另一种格式时,strftime非常有用。

您的项目的格式不受支持。(此处列出格式)。因此,您可能已将其保存为默认的TEXT格式。

所以,现在你需要编写一个查询,将文本转换为正确的格式并进行比较。你基本上必须编写自己的最大化函数,它将把文本转换为MAX函数可以处理的内容。

这是通过子字符串和铸造的组合来完成的。我在下面的查询中所做的是将子字符串强制转换为整数,将它们相乘以转换为秒,然后将其添加到MAX中。

SELECT time,MAX(cast(substr(time,1,2) as integer)*60+cast(substr(time,4,2) as integer )+cast(substr(time,7,3) as integer)/100) FROM t;

下面是一个运行的例子

http://sqlfiddle.com/#!7/1c665/1

相关内容

  • 没有找到相关文章

最新更新