sql - 对 Oracle 时间戳使用 BETWEEN 或 <=, >=

标签 sql oracle oracle10g

我的 Oracle 表有一列 tmstpTIMESTAMP(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');

我认为他们应该给出相同的结果。关于可能发生什么的任何意见?我应该如何调试这个?

最佳答案

抱歉,添麻烦了。我想到了。我的问题实际上也有缺陷,因为我对其进行了编辑以隐藏 secret 数据。

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

愚蠢的我。

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

关于sql - 对 Oracle 时间戳使用 BETWEEN 或 <=, >=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4258529/

相关文章:

php - 计算给定月份的总值(value)

php - 使用 MySql 和 PHP 创建论坛网站时出现问题。不确定如何显示主题

oracle - 如何在Oracle中为1列创建具有特定值的唯一多列约束?

sql - Oracle 分层查询

sql - Oracle,动态确定列名

php - 如何从mysql数据库获取一个用户的等级?

java - 如何在 spring 中仅使用自动生成的值向数据库插入一行,并返回一个 ID?

database - HP Vertica,我们可以在 Windows 上安装它吗?我们用于 Oracle 的 SQL 与 HP Vertica 相同吗?

sql - 为什么 SUM(null) 在 Oracle 中不是 0?

VBA/Excel : Not accepting SQL subclauses