我如何在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语句有什么问题? –