sql - 如何使用 TIMEZONE 列获取时间戳(4)的前一小时?
问题描述
所以我有一个名为 Value 的表。我正在尝试导出最后一小时的值(HR --> Timestamp(4) with TIME ZONE),以便我可以在我正在构建的这个存储过程中的条件语句中使用它。但是,当我尝试以下操作时,Oracle 仅返回日期(01-Jan-19)而不是前一小时(01-Jan-19 01.00.00.00000000 AM UTC)。我究竟做错了什么?
select hr
, hr - (1/24) as Converted
from value;
如果我尝试以下操作,我会返回 ' 31-DEC-16 12.00.00.000000000 AM ' 作为 'Converted' 的值(无论 HR 的值是什么):
select hr
, to_timestamp(hr - (1/24)) as converted
from value;
最终将用作我的存储过程中变量的定义:
select max(value)
into v_Previous_hour
from value
where hr = hr - (1/24);
我在这里错过了什么吗?提前致谢。
解决方案
或者你可以使用INTERVAL
:
SELECT TO_CHAR(HR) AS HR,
TO_CHAR(CAST(HR - INTERVAL '1' HOUR - INTERVAL '0.233' SECOND AS TIMESTAMP(4) WITH TIME ZONE)) AS HR_MINUS_ONE_HOUR
FROM VAL;
(这里我减去了额外的 0.233 秒,以确保我们正在处理时间戳,根据@AlexPoole 对@OldProgrammer 的回答的评论)。
推荐阅读
- php - 如何在没有嵌套foreach循环的情况下基于键值对组合两个多维数组?
- c# - 在 Asp.Net Web Api 的 EntityFramework 中更新之前查找表对象实体以获取列的当前值
- java - 线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/commons/lang/builder/CompareToBuilder
- android - 如何在ffmpeg中合并音频和两个视频文件?
- java - 如何读取 java 类中的运行时变量?
- python - 关于在循环中添加字符的问题
- python - 新类实例继承以前的实例值
- ios - 在声明一个强自我之后在闭包中使用 [弱自我] 是否有潜在的缺点?
- scala - 如何在读取文本文件 spark/scala RDD 时将每 9 行文件作为单个记录
- ruby-on-rails - Rails -> swagger -> rswag:是否可以使用 AND/OR 链接所需的属性?