首页 \ 问答 \ 使用BETWEEN或<=,> =用于Oracle时间戳(Using BETWEEN or <=, >= for Oracle timestamps)

使用BETWEEN或<=,> =用于Oracle时间戳(Using BETWEEN or <=, >= for Oracle timestamps)

我的Oracle表有一个带TIMESTAMP(3) WITH TIME ZONE数据类型的列tmstp

当我运行以下查询

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?


原文:https://stackoverflow.com/questions/4258529
更新时间:2019-07-04 04:39

最满意答案

抱歉,添麻烦了。 我想到了。 我的问题实际上也有缺陷,因为我编辑它以隐藏机密数据。

在其中一个查询中,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.

2010-11-23

相关问答

更多

Java - Oracle - 数据库插入 - 时间戳到日期列(Java - Oracle - DB Insert - Timestamp to Date column)

Oracle中SQL类型和JDBC类型之间的映射有点复杂,特别是对于DATE和TIMESTAMP SQL类型。 Oracle数据库允许您在DATE列中存储时间戳信息,这与SQL标准中DATE的定义完全相反。 在9.2之前引入TIMESTAMP列支持时, Statement.setTimestamp将适用于DATE列。 从9.2开始,直到11.1,JDBC驱动程序将SQL DATE类型映射到JDBC Date ,将SQL TIMESTAMP类型映射到JDBC Timestamp 。 使用10.2

SQLite中两个时间戳之间的差异具有高精度(Difference between two timestamps in SQLite with high precision)

如文档所述,内置日期/时间函数解释的格式为: YYYY-MM-DD HH:MM:SS.SSS 换句话说,它们只解析小数秒的前三位数。 您可以尝试使用substr()提取其他数字,并使用正确的比例将它们添加到结果中。 As documented, the format interpreted by the built-in date/time functions is: YYYY-MM-DD HH:MM:SS.SSS In otherwords, they parse only the first

时间戳应该始终使用UTC吗?(Should timestamps always use UTC?)

时间戳当然应该以UTC格式存储。 格式化日期的方式取决于该时区的要求。 时间戳通常以UTC格式存储,因此显示到其他时区的转换更容易且更容易。 通过仅在数据库中将时间戳存储为UTC,您可以有效地使时区成为视图关注点。 关于时间比较的所有数学和逻辑都可以假设在世界范围内同步。 其余的只是一个客户知道它在哪里,规则是什么,然后只是吐出结果的问题。 例如,通过Chrome开发人员控制台在JavaScript中: var dateObj = new Date(); console.log(dateObj

在PostgreSQL中查找时间戳之间的差异(以秒为单位)(Find difference between timestamps in seconds in PostgreSQL)

尝试: SELECT EXTRACT(EPOCH FROM (timestamp_B - timestamp_A)) FROM TableA 详细信息: EXTRACT 。 Try: SELECT EXTRACT(EPOCH FROM (timestamp_B - timestamp_A)) FROM TableA Details here: EXTRACT.

INSTR和LIKE在Oracle中有什么区别?(What is the difference between INSTR and LIKE in Oracle?)

这取决于数据和模式。 如果使用like 'a%' ,那么Oracle可以使用BTree索引来查找匹配项,因为它可以使用模式的开始搜索btree,然后只考虑子树。 这对LIKE '%a'不起作用,但你可以通过创建一个计算列来反转你想要搜索的列的所有值(所以你得到上面的模式)来解决这个问题。 如果使用散列索引,那么Oracle可以做的事情很少,但是可以扫描整个索引。 只有几个不同的值时,它可能会更快。 我不确定INSTR是否可以使用索引,因为它没有固定的锚点。 就像所有的性能问题一样: 用一些真实的

iPhone:将Oracle时间戳转换为NSDate或Unix时间戳(例如双倍)(iPhone: Converting Oracle Timestamp to NSDate or to Unix Timestamp (e.g. double))

我不确定转换为NSDate,但您可以轻松地将Oracle日期转换为unix时间戳。 以下SQL代码段将执行此操作: (my_date - to_date('01/01/1970','DD/MM/YYYY')) * 86400 I'm not sure about the converting to an NSDate, but you can convert an Oracle date to a unix timestamp easily. The following SQL snippet ...

Oracle行更改时间戳(Oracle row change time stamp)

Oracle使用系统变更编号 (SCN)。 您可以在查询中以ora_rowscn的形式访问它。 但是,默认情况下,它表示整个块被修改的时间而不是特定的行。 如果需要行级信息,则必须使用rowdependencies说明符创建表。 而且您对物化视图的工作方式做出了错误的假设。 Oracle使用表MLOG $ 和$ RUPDS跟踪更改。 Oracle uses System Change Number (SCN). You can access it in a query as ora_rowscn

Oracle Cloud for Industry与Oracle Public Cloud之间的差异?(Differences between Oracle Cloud for Industry vs Oracle Public Cloud?)

面向行业的Oracle云有多个云解决方案(及其产品包),针对特定行业,如金融服务,消费品等。他们的公共云就像任何其他公共云一样,这意味着云提供的平台或基础架构将在oracle中运行数据中心,而不是公司的数据中心,然后成为私有云。 在公共云的情况下,任何人都有资格购买计算服务并使用它。 您只能确保逻辑分离,而不是物理硬件级别分离。 Oracle cloud for industry has multiple cloud solutions( with their product bundles) t ...

相关文章

更多

最新问答

更多
  • 使用javascript为用户延迟加载内容的更好方法是什么?(What is a better way to lazy load content for users with javascript?)
  • 如何修复无法将类型的值...转换为预期的参数类型inout _(How to fix Cannot convert value of type … to expected argument type inout _)
  • 从哪里开始解析JSON?(Where to start with parsing JSON?)
  • Mail.php不适用于.htaccess(Mail.php doesn't work with .htaccess)
  • 使用htaccess设置子域(Setting subdomains using htaccess)
  • mod_pagespeed和java应用服务器(mod_pagespeed and java app servers)
  • Win32:如何崩溃?(Win32: How to crash?)
  • FFmpeg中RGB到YUV转换的错误(Error in RGB to YUV conversion in FFmpeg)
  • 如何在Android中首次打开应用时创建弹出窗口?(How to create pop-up when first open app in Android?)
  • 通过动态传递表名和列名来反转COLUMN DATA(Reversing COLUMN DATA by dynamically passing table name and Column Name)
  • 如何计算C#中ICollection中有多少元素?(How can I count how many elements are in an ICollection in C#)
  • 从pg-promise查询中获得结果(get result out of a pg-promise query)
  • 使用管理器注册一个类,然后调用子类重写方法(Register a class with a manager, then call the sub classes overridden methods)
  • 传递&在查询字符串中(Passing & in query string)
  • 谷歌浏览器打印预览不会第一次加载页面(google chrome print preview does not load the page the first time)
  • FsLexYacc:Tests / MiniProject“在.fsproj中导入错误”(FsLexYacc : Tests/MiniProject “incorrect Import in .fsproj”)
  • 创建一个模型方法,计算用户的帖子并在rspec(Rails)中测试?(Create a model method that counts a user's posts and test in rspec (Rails)?)
  • 记录线程的奇怪行为(Strange behaviour of logging thread)
  • 移动数组中的索引(Moving indices in an array)
  • MVC 5 - > MVC 5.1迁移。(MVC 5 -> MVC 5.1 Migration. Intellisense issues)
  • 使用函数在z3中创建列表(Creating List in z3 using function)
  • 如何进行html随机重定向(How to make a html random redirect)
  • 角度js:使用角度过滤器分割日期,月份和时间(Angular js: spliting date,month and time using angular filter)
  • 将所有模块导入一个文件夹,并按其属性之一使用它们(Import all modules in one folder and use them by one of its attributes)
  • 只需要在git的当前分支上获得合并列表(Just get list of merge happened on my current branch in git)
  • React-Native导入库并在多个组件中可用(React-Native import a library and make available in multiple components)
  • 如何使用jQuery为固定(偏移)位置设置div动画?(How to animate div for a fixed (offset) position using jQuery?)
  • operator ==和vector confusion(operator== and vector confusion)
  • 如何获取所选图像映射alt值?(How to get selected image map alt value?)
  • 在角度,如何使用取消用户事件的美元间隔,如页面更改?(In angular, how to use cancel an $interval on user events, like page change?)