mysql - SQLite 和 STRFTIME

标签 mysql sql database sqlite qsqlquery

在我的 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 非常有用。

您的项目格式不受支持。 (List of formats here)。因此,您可能将其保存为默认的文本格式。

所以,现在您需要编写一个查询,将该文本转换为正确的格式并进行比较。您基本上必须编写自己的最大化函数,它将将此文本转换为 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

关于mysql - SQLite 和 STRFTIME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33447429/

相关文章:

mysql - 检查用户是否已经注册

mysql 检查日期约束(触发器)

mysql - Insert Into 遇到各种问题

mysql - SQL 查询 (MAX-MIN) 显示错误结果

mysql - 在单个查询中多次使用相同的子查询

mysql - ERROR 1064 (42000) - SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法

sql - 将行值合并到 CSV 中(对于 SQL Server,也称为 GROUP_CONCAT)

python - save_or_update 使用 SQLalchemy 0.6

java - 对于 SQLite (Eclipse),将数据库从本地导入到模拟器,反之亦然

c# - 我可以像部署内置数据库一样在我的桌面应用程序中部署 SQL Server Express 吗?