Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在时间戳之间选择数据_Sql_Oracle - Fatal编程技术网

Sql 在时间戳之间选择数据

Sql 在时间戳之间选择数据,sql,oracle,Sql,Oracle,用例:查询选择一整天的记录,并且它应该定期运行 这是我的问题 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 to_char(在日期+间隔'12'小时,'DD-MON-yyyyyyyh24:MI:SS'中) 从我的桌子上 其中

用例:查询选择一整天的记录,并且它应该定期运行

这是我的问题

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 to_char(在日期+间隔'12'小时,'DD-MON-yyyyyyyh24:MI:SS'中)
从我的桌子上
其中,传入日期>sysdate-2,传入日期
我只需要选择昨天的数据。由于select语句中的转换,我也得到了今天的数据。如何仅选择昨天的数据?我的数据库采用UTC+7.00标准。我需要在本地标准中显示它,以便在select语句中进行转换。如何仅显示昨天的数据? 我卡住了。请帮帮我,只为了拿到

昨日数据

做你的
其中
条件为

incoming_date between trunc(sysdate) - interval '1' day and trunc(sysdate) - interval '1' second
只是为了得到

昨日数据

做你的
其中
条件为

incoming_date between trunc(sysdate) - interval '1' day and trunc(sysdate) - interval '1' second

我不确定我是否明白你的问题,但我想我可以解释一些东西

我假设你的桌子有点像这样:

 date_added | some_data | some_more_data 
------------|-----------|----------------
 date       | data1     | data2
据我所知,您的目标是使用select语句获取在查询运行前一天添加到表中的所有行。但您当前的尝试也因返回今天的结果而失败

下面是正在发生的事情(我想):
SYSDATE
不仅提供当前日期,还提供时间。您只需更改当前会话并将日期/时间格式设置为包含时间和日期的格式,就可以看到这一点

获取今天的行的原因很简单,您的查询要求所有行的日期字段在
现在
现在-24小时之间。不是今天
今天-24小时

那么解决方案是什么呢?
使用
TRUNC
功能将
SYSDATE
调整到当天

正如您提到的时区一样,请记住,
SYSDATE
返回服务器本身的日期,而不是计算机的日期。

这里有更多信息:

我不太确定我是否明白你的问题,但我想我可以解释一些东西

我假设你的桌子有点像这样:

 date_added | some_data | some_more_data 
------------|-----------|----------------
 date       | data1     | data2
据我所知,您的目标是使用select语句获取在查询运行前一天添加到表中的所有行。但您当前的尝试也因返回今天的结果而失败

下面是正在发生的事情(我想):
SYSDATE
不仅提供当前日期,还提供时间。您只需更改当前会话并将日期/时间格式设置为包含时间和日期的格式,就可以看到这一点

获取今天的行的原因很简单,您的查询要求所有行的日期字段在
现在
现在-24小时之间。不是今天
今天-24小时

那么解决方案是什么呢?
使用
TRUNC
功能将
SYSDATE
调整到当天

正如您提到的时区一样,请记住,
SYSDATE
返回服务器本身的日期,而不是计算机的日期。

这里有更多信息:

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

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为2017年11月5日18:56:35,则在时间间隔比较中使用的时间间隔为2017年11月4日00:00:00至2017年11月4日23:59:59。比较之间包括两个端点,因此在本例中,这将仅返回传入日期为2017年11月4日的数据


祝你好运。

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

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为2017年11月5日18:56:35,则在时间间隔比较中使用的时间间隔为2017年11月4日00:00:00至2017年11月4日23:59:59。比较之间包括两个端点,因此在本例中,这将仅返回传入日期为2017年11月4日的数据


祝你好运。

通常我只使用Trunc比较日期

WHERE trunc(incoming_date) = trunc(sysdate-1)

通常我只使用Trunc比较日期

WHERE trunc(incoming_date) = trunc(sysdate-1)
我的数据库采用UTC+7.00标准。我需要在本地标准中显示它,以便在select语句中进行转换

使用神奇值(
间隔“12”小时
)并不能说明它的含义或您在选择该值时所做的假设。相反,您可以使用
FROM_TS(timestampvalue,timezonestring)
将值从
时间戳
转换为带有时区的
时间戳数据类型,然后使用
在本地时间
将其转换为本地时间,从而更好地描述该过程。然后,如果您有夏令时或将查询转移到另一个国际位置,则它仍将以当前本地时间显示。像这样:

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 )
SELECT TO\u CHAR(
从当地时间的"TZ"(CAST)(输入日期为时间戳),"07:00",,
'DD-MON-YYYY HH24:MI:SS'
) 
从我的桌子上
其中传入日期>=TRUNC(SYSDATE)-间隔“1”天
和传入日期
如何仅显示昨天的数据

TRUNC(SYSDATE)
将把今天的日期截短回午夜。要获取昨天的数据,您可以获取大于或等于
TRUNC(SYSDATE)-间隔“1”天
(今天午夜前一天)且小于
TRUNC(SYSDATE)
(今天午夜)的值

我的数据库采用UTC+7.00标准。我需要在本地标准中显示它,以便在select语句中进行转换

使用神奇值(
间隔“12”小时
)并不能说明它的含义或您在选择该值时所做的假设。相反,您可以通过使用
FROM_TS(timestampvalue,timezonestring)
时间戳
的值转换为带有时区的
时间戳
数据类型,然后在本地使用
,来更好地描述该过程