使用 BETWEEN 或 <=、>= 作为 Oracle 时间戳

发布于 2024-10-04 04:19:06 字数 754 浏览 1 评论 0 原文

我的 Oracle 表有一列 tmstp,其数据类型为 TIMESTAMP(3)WITH TIME ZONE

当我运行以下查询时,

SELECT COUNT(column1) 
  FROM table1 
 WHERE tmstp BETWEEN to_timestamp_tz('10-OCT-10 05.00.00.000000000 AM -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR')
                 AND to_timestamp_tz('11-OCT-10 04.59.59.999999999 AM -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR');

它给出的计数大约是以下查询的两倍:

SELECT COUNT(column1) 
  FROM table1 
 WHERE tmstp >= to_timestamp_tz('10-OCT-10 05.00.00.000000000 AM -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR') 
   AND tmstp <= to_timestamp_tz('11-OCT-10 04.59.59.999999999 AM  -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR');

我认为它们应该给出相同的结果。对可能发生的事情有任何意见吗?我应该如何调试这个?

My Oracle table has a column tmstp with the TIMESTAMP(3) WITH TIME ZONE datatype.

When I run the following query

SELECT COUNT(column1) 
  FROM table1 
 WHERE tmstp BETWEEN to_timestamp_tz('10-OCT-10 05.00.00.000000000 AM -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR')
                 AND to_timestamp_tz('11-OCT-10 04.59.59.999999999 AM -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR');

it gives about twice the count as the following query:

SELECT COUNT(column1) 
  FROM table1 
 WHERE tmstp >= to_timestamp_tz('10-OCT-10 05.00.00.000000000 AM -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR') 
   AND tmstp <= to_timestamp_tz('11-OCT-10 04.59.59.999999999 AM  -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR');

I thought they should give equivalent results. Any input on what might be happening? How should I debug this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

许一世地老天荒 2024-10-11 04:19:06

抱歉给您带来麻烦了。我想通了。我的问题实际上也有缺陷,因为我对其进行了编辑以隐藏机密数据。

其中一个查询中的 AM 和时区偏移量之间存在额外的空格,这导致了不同的结果。

愚蠢的我。

因此,如果转换后的时间戳字符串有点偏离空格,则答案可能会偏离。

Sorry for the trouble. I figured it out. My question is actually flawed too because I edited it to hide confidential data.

There was an extra whitespace between the AM and timezone offset in one of the queries and that caused different results.

Stupid me.

So if the timestamp string that is converted is a bit off with whitespaces, the answers might be off.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文