[英]Find entries in sql that were done milliseconds against each other
我需要調試一個在別人的代碼中發現的問題,該問題會同時讀取ID和密鑰的時間戳。 但是,我注意到它沒有讀取毫秒信息。 雖然這是一個潛在原因,但尚未確認,因此我需要找出這是否是原因。
如果表中的兩個條目在同一秒內10:20:05.0500 pm和10:20:05.5000 pm發生,但不是10:20:05.5000和10:20:06.0500,則可能會發生此問題。
如何編寫這樣的查詢來查找?
我正在使用Oracle pl / sql。
在Oracle中使用小數秒,一列必須是“ TIMESTAMP ”數據類型。
也許其他人的代碼使用的是DATE類型的變量,該變量是年-月-日時-分-秒,無小數秒。
您可以提供表格說明和其他人的代碼嗎?
要查找具有相同日期/時間(秒精度)但具有不同毫秒數的記錄,可以通過將表與其自身連接來比較不同記錄
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的示例 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.