首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择时间戳之间的数据

选择时间戳之间的数据
EN

Stack Overflow用户
提问于 2017-11-06 04:11:06
回答 5查看 450关注 0票数 0

Usecase:选择全天记录的查询,应定期运行。

这是我的问题。

代码语言:javascript
复制
Select to_char(in_date + interval '12' hour, 'DD-MON-YYYY HH24:MI:SS') 
from my_table 
where incoming_date > sysdate-2 and incoming_date < sysdate

我只需要选择昨天的数据。由于select语句中的转换,我还获得了今天的数据。如何只选择昨天的数据?我的数据库是UTC+7.00标准的。我需要以本地标准显示它,所以我在select语句中进行了转换。我如何只显示昨天的数据呢?我被卡住了。请帮帮我

EN

回答 5

Stack Overflow用户

发布于 2017-11-06 07:58:10

要获取昨天的所有数据,您应该使用

代码语言:javascript
复制
SELECT TO_CHAR(IN_DATE + INTERVAL '12' HOUR, 'DD-MON-YYYY HH24:MI:SS')
  FROM MY_TABLE
  WHERE INCOMING_DATE BETWEEN TRUNC(SYSDATE) - INTERVAL '1' DAY
                          AND TRUNC(SYSDATE) - INTERVAL '1' SECOND

例如,如果SYSDATE为05-NOV-2017 18:56:35,则BETWEEN比较中使用的时间间隔将是从04-NOV-2017 00:00:00到04-NOV-2017 23:59:59。两次比较包括两个端点,因此在此示例中,这将仅返回INCOMING_DATE为2017年11月4日的某个时间的数据。

祝你好运。

票数 2
EN

Stack Overflow用户

发布于 2017-11-06 04:46:27

只是为了让

昨天的数据

WHERE条件设置为

代码语言:javascript
复制
incoming_date between trunc(sysdate) - interval '1' day and trunc(sysdate) - interval '1' second
票数 1
EN

Stack Overflow用户

发布于 2017-11-06 17:55:15

My DB采用UTC+7.00标准。我需要以本地标准显示它,所以我在select语句中进行了转换。

使用魔术值(INTERVAL '12' HOUR)并不能描述它的含义或您在选择该值时所做的假设。相反,通过使用FROM_TS( timestampvalue, timezonestring )将值从TIMESTAMP转换为TIMESTAMP WITH TIME ZONE数据类型,然后使用AT LOCAL TIME将其转换为本地时间,可以更好地描述该过程。然后,如果您有夏令时或将查询转移到另一个国际位置,那么它仍将以当前本地时间显示。如下所示:

代码语言:javascript
复制
SELECT TO_CHAR(
         FROM_TZ( CAST( in_date AS TIMESTAMP ), '+07:00' ) AT LOCAL TIME,
         'DD-MON-YYYY HH24:MI:SS'
       ) 
FROM   my_table 
WHERE  incoming_date >= TRUNC( SYSDATE ) - INTERVAL '1' DAY
AND    incoming_date <  TRUNC( SYSDATE )

以及如何只显示昨天的数据?

TRUNC( SYSDATE )会将今天的日期截断到午夜。要获取昨天的数据,您可以获取大于或等于TRUNC( SYSDATE ) - INTERVAL '1' DAY (今天午夜前一天)以及小于TRUNC( SYSDATE ) (今天午夜)的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47126143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档