sql - 在 sql 中查找彼此在毫秒内完成的条目
问题描述
我需要调试我在其他人的代码中发现的问题,它会读取密钥的 id 和时间戳。但是,我注意到它没有读取毫秒信息。虽然这是一个潜在的原因,但这没有得到证实,我需要找出这是否是原因。
如果表中的两个条目发生在同一秒内,即 10:20:05.0500 pm 和 10:20:05.5000 pm,而不是 10:20:05.5000 和 10:20:06.0500,则可能会出现问题。
我如何编写这样的查询来查找它?
我正在使用 Oracle pl/sql。
解决方案
要查找具有相同日期/时间(达到秒精度但具有不同毫秒)的记录,您可以通过将表连接到自身来比较不同的记录
SELECT A.ts, B.ts
FROM
Test A
INNER JOIN Test B
ON TO_CHAR(A.ts, 'YYYY-MM-DD HH24:MI:SS') = TO_CHAR(B.ts, 'YYYY-MM-DD HH24:MI:SS')
WHERE
A.ts < B.ts
ORDER BY
A.ts, B.ts;
TO_CHAR
截断毫秒。这很重要,因为该轮函数可能会产生不同的秒数。例如,CAST(ts as timestamp(0))
回合,这不是我们需要的。
下面链接中的示例有 999 毫秒的记录来测试它。
请参阅SQL Fiddle 上的示例。
推荐阅读
- html - Outlook 上未显示 HTM 电子邮件背景图像
- python - python - 跨方法和类传递变量
- javascript - 在循环内按按钮创建多个元素(输入)
- list - 一个 Haskell 函数,它接受两个字符串并根据第一个过滤第二个
- python - 强制 pytest.main() 使用不同的 pytest.ini
- deployment - 在生产和版本控制同步问题中运行 Strapi
- macos - 终端无法在带有 OSX 的 Aptana IDE 中工作
- javascript - 传递、接收和使用函数到子组件中
- c# - C# 是否支持嵌套的强类型树结构?
- r - 使用 R 将数据块中的 spark 数据帧写入 Azure 数据缺乏存储