标签: date-arithmetic

如何从分区表优化oracle查询?

我有一个按日期(按天)分区的表和字段上的本地索引(包括日期字段).如果我查询:

SELECT*FROM table t WHERE t.fdate = '30 .06.2011'

它很快实现了,但是当我做的时候

SELECT*FROM table t WHERE EXTRACT(来自t.fdate的月份)= 6 AND EXTRACT(来自t.fdate的年份)= 2011

它完成大约200秒.

如何优化此查询?可能我需要在EXTRACT(从日期开始的月份)和EXTRACT(从日期开始)创建本地索引?

oracle performance partitioning oracle10g date-arithmetic

2
推荐指数
1
解决办法
4248
查看次数

比较表示日期的整数

我正在努力确定一个日期是否在另一个日期的 30 天内。使这变得棘手的是日期由整数表示。所以如果我有:

int year = 1990; int month = 1; int day = 1;
Run Code Online (Sandbox Code Playgroud)

如果将其与以下内容进行比较,我如何正确返回 true:

int year = 1989; int month = 12; int day = 31
Run Code Online (Sandbox Code Playgroud)

目前我正在使用DateTime.DaysInMonth(year, month)但不确定如何在比较中应用它。

c# date date-arithmetic

2
推荐指数
1
解决办法
52
查看次数

Oracle的ADD_MONTHS()的SQL Server版本

在Oracle中,您可以使用ADD_Months在sql语句中动态添加月份.什么是MS SQL版本.

Oracle示例

Select TestDate, 
       TestFrequency,
        ADD_MONTHS(TestDate, TestFrequency) AS FutureTestDate 
  FROM Tests
Run Code Online (Sandbox Code Playgroud)

来源:java的网站

sql sql-server oracle date-arithmetic

1
推荐指数
1
解决办法
1万
查看次数

针对日期列的Oracle SQL Where子句

我有一个DATE列,其中包含日期,但我需要查询它以查找不到30天的记录.

START_DATE
----------
01-AUG-2010
09-AUG-2010
22-AUG-2010
09-SEP-2010
Run Code Online (Sandbox Code Playgroud)

查询:

SELECT START_DATE
 WHERE START_DATE < 30;
Run Code Online (Sandbox Code Playgroud)

我知道在ORACLE SQL中查询很简单,但我做错了.

sql oracle oracle10g oracle9i date-arithmetic

1
推荐指数
1
解决办法
2万
查看次数

PL/SQL过程随机时间戳

我如何生成随机时间戳并将其放入var中?

谢谢,

托马索

oracle plsql date-arithmetic

1
推荐指数
1
解决办法
3187
查看次数

oracle上的日期函数

我在oracle上有关于日期函数的问题.

我有下表

statistic_table(
   pages AS varchar(10),
   date_created AS date
);
Run Code Online (Sandbox Code Playgroud)

我有以下sql

SELECT COUNT(*) FROM statistic_table WHERE date_created BETWEEN sysdate-5 AND sysdate-1
and
SELECT COUNT(*) FROM statistic_table WHERE date_created BETWEEN to_date('12-AUG-2011') AND to_date('16-AUG-2011');
Run Code Online (Sandbox Code Playgroud)

问题是,为什么它会返回不同的数字.假设sysdate-5返回12-aug-2011并且sysdate-1返回16-aug-2011

任何帮助将非常感激!

干杯,

oracle date-arithmetic sql-date-functions

1
推荐指数
1
解决办法
1017
查看次数

几个月之间的闰年

当我发现28-FEB-11和29-FEB-12之间的月份时,oracle中的函数之间的月份返回12.实际上它应该是12.096.此功能不适用于闰年.

在28-FEB-11和29-FEB-12之间,为1年(12个月)和1天.

      select months_between('28-FEB-12', '28-FEB-11') from dual; -- 12
      **select months_between('29-FEB-12', '28-FEB-11') from dual; -- 12**
      select months_between('28-FEB-12', '27-FEB-11') from dual; -- 12.0322
      select months_between('27-FEB-12', '28-FEB-11') from dual; -- 11.9677
Run Code Online (Sandbox Code Playgroud)

这是一个Oracle漏洞??

-Vishwa

oracle date-arithmetic

1
推荐指数
1
解决办法
2254
查看次数

在oracle找一个月的周数

我有桌子,我已经存储了所有星期一,例如(1月8日,8月​​10日,15日,10月22日,29日),我需要找出那个月的周,这将是第1个八月它将是1,8月10日2从此以后......对于Sept计数器应该再次从1开始.可以通过sql查询完成,数据库是oracle 10g吗?

如果第一个月在周三到来,则该月的第一个星期一应该标记为1,它的第二周但需要为1.

sql oracle date-arithmetic

1
推荐指数
1
解决办法
2万
查看次数

Oracle中的日期减法问题

我在Oracle数据库上做日期替换时遇到了一些麻烦.

我有一个问题:

select 
status,
id, 
to_char(creationdatetime,'yyyy/mm/dd hh24:mm:ss') as Creation_Time,
to_char(lastmodificationdatetime,'yyyy/mm/dd hh24:mm:ss') as Last_Mod_Time,
substr(lastmodificationdatetime - creationdatetime,1,30)*24 as Time_Between,
--trunc((((86400*(lastmodificationdatetime - creationdatetime))/60)/60)/24) "Days",
--trunc(((86400*(lastmodificationdatetime - creationdatetime))/60)/60)-24*(trunc((((86400*(lastmodificationdatetime - creationdatetime))/60)/60)/24)) "Hrs",
--trunc((86400*(lastmodificationdatetime - creationdatetime))/60)-60*(trunc(((86400*(lastmodificationdatetime - creationdatetime))/60)/60)) "Min",
--trunc(86400*(lastmodificationdatetime - creationdatetime))-60*(trunc((86400*(lastmodificationdatetime - creationdatetime))/60)) "Sec"
from 
table
where
Status='Completed' or Status='Cancelled';
Run Code Online (Sandbox Code Playgroud)

(trunc是检查计算日期的其他方式)

然后我得到结果:

Status       ID CreationDate    Lastmodificationdate    Time_Between                     Days   Hours   Minutes Seconds

Completed   id1 2013/03/25 12:03:14 2013/03/25 13:03:17 1,78416666666666666666666666648    0    1   47  3
Completed   id2 2013/03/26 09:03:22 2013/03/26 09:03:28 0,45166666666666666666666666656    0    0   27  5
Cancelled …
Run Code Online (Sandbox Code Playgroud)

sql oracle datetime date-arithmetic

1
推荐指数
1
解决办法
192
查看次数

熊猫数据框将逻辑应用于列计算

嗨,我有一个具有以下结构的巨大数据框:

    ticker  calendar-date     last-update   Assets    Ebitda  .....
0   a       2001-06-30        2001-09-14    110       1000    .....
1   a       2001-09-30        2002-01-22    0         -8      .....
2   a       2001-09-30        2002-02-01    0         800     .....
3   a       2001-12-30        2002-03-06    120       0       .....
4   b       2001-06-30        2001-09-18    110       0       .....
5   b       2001-06-30        2001-09-27    110       30      .....
6   b       2001-09-30        2002-01-08    140       35      .....
7   b       2001-12-30        2002-03-08    120       40      .....
..
Run Code Online (Sandbox Code Playgroud)

我想要的是每个股票行情显示:从每一行的上一个日历日期(t-1)和最后一个日历日期(t-2)开始,使用资产和Ebitda的%变化创建新列。

但是问题来了:

1)如您所见,日历日期(按行情显示)并不总是唯一值,因为同一日历日期可以有更多的最新更新,但我总是希望自上次日历日期以来的更改,而不是最后一次更新以来的更改。

2)在这种情况下,有几行具有0值,我想使用最后观察到的值来计算%change。如果我只有一只简单的股票,我只会填入价格,但是由于我有很多股票行情,因此我无法安全地执行此操作,因为我可以将价格从股票代码“ a”填充到股票代码“ b”,但不是我想要的是

我猜这可以通过使用if语句创建一个函数来解决,以处理数据异常,或者也许有一个很好的方法在熊猫内部处理这个问题……也许是多索引?事实是我不知道如何完成这项任务,任何人都可以帮忙吗?

谢谢

python logic date-arithmetic multidimensional-array pandas

1
推荐指数
1
解决办法
188
查看次数