我如何在Oracle SQL比較兩個時間戳甲骨文
- 日期1 = 1420042143
- 日期2 = 1412176143
SELECT * FROM my_table WHERE my_table.date BETWEEN Date1 AND Date2
我如何在Oracle SQL比較兩個時間戳甲骨文
SELECT * FROM my_table WHERE my_table.date BETWEEN Date1 AND Date2
假設這些都是Unix類型比較這兩timestamp
以數字形式存儲的基於時代的時間戳,而不是以奇怪的方式格式化的真正的Oracle/SQL時間戳,您顯示的內容將起作用;除了你已經顯示的方式之外,值是錯誤的。 From the documentation:
如果expr3 < expr2,則間隔爲空。
當你使用作爲下界Date1
值更高您使用的上限Date2
值,你將不會看到任何數據,即使有任何行值你的範圍,除非你交換他們過來:
SELECT * FROM my_table WHERE my_table.date BETWEEN Date2 AND Date1
如果你在其他地方獲得這些形式,不知道這將是更高的,你可以用最少,最偉大的去解決它:
SELECT * FROM my_table
WHERE my_table.date BETWEEN LEAST(Date1, Date2) AND GREATEST(Date1, Date2)
另請注意,between
是包容性的。對於一些樣本數據:
CREATE TABLE my_table(epoch NUMBER);
INSERT INTO my_table(epoch) VALUES (1412176143);
INSERT INTO my_table(epoch) VALUES (1417584134);
INSERT INTO my_table(epoch) VALUES (1420042143);
原始查詢相當於沒有發現數據:
SELECT * FROM my_table WHERE epoch BETWEEN 1420042143 AND 1412176143;
no rows selected
倒車值找到數據,包括上限和下限值本身:
SELECT * FROM my_table WHERE epoch BETWEEN 1412176143 AND 1420042143;
EPOCH
----------
1412176143
1417584134
1420042143
你顯示的查詢有什麼問題?除此之外,你有他們錯了嗎? –
這些值是什麼數據類型?顯然他們不是Oracle DATE或TIMESTAMP。你顯示的SQL語句有什麼問題? –