簡體   English   中英

在sql中查找彼此相隔毫秒的條目

[英]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類型的變量,該變量是年-月-日時-分-秒,無小數秒。

數據庫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的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM