问题描述
你好,问一下汤姆团队。
我在一些表中有三个日期列。我被要求做一些数学运算,并以毫秒为单位显示它。我需要将日期数据类型更改为时间戳,也许是时间戳 (3)。
这是我的查询:
选择计数 (*) QTY_DOCS,
ROUND(MIN((register_date-received_date)* 24*60*1000),2) MIN_MS_REG,
ROUND (平均值 ((register_date-received_date)* 24*60*1000),2) AVG_MS_REG,
圆形 (最大 ((register_date-received_date)* 24*60*1000),2) 最大ms_reg,
回合 (最小 ((updated_date-register_date)* 24*60*1000),2) 最小 _ ms_update_state,
回合 (平均 ((updated_date-register_date)* 24*60*1000),2) 平均数字 _ ms_update_state,
回合 (最大 ((updated_date-register_date)* 24*60*1000),2) 最大更新状态
从用户。表t
其中t.register_date >= TO_DATE (:FIRSTDATE,'DD/MM/RRRR')
和t.register_date
1.从日期更改为时间戳数据类型将如何影响性能 (register_date上的索引,...)。时间戳上的索引是否不同或只是普通索引,我可以继续使用TO_DATE函数?
2.关于这一切,我还需要记住什么?
我在一些表中有三个日期列。我被要求做一些数学运算,并以毫秒为单位显示它。我需要将日期数据类型更改为时间戳,也许是时间戳 (3)。
这是我的查询:
选择计数 (*) QTY_DOCS,
ROUND(MIN((register_date-received_date)* 24*60*1000),2) MIN_MS_REG,
ROUND (平均值 ((register_date-received_date)* 24*60*1000),2) AVG_MS_REG,
圆形 (最大 ((register_date-received_date)* 24*60*1000),2) 最大ms_reg,
回合 (最小 ((updated_date-register_date)* 24*60*1000),2) 最小 _ ms_update_state,
回合 (平均 ((updated_date-register_date)* 24*60*1000),2) 平均数字 _ ms_update_state,
回合 (最大 ((updated_date-register_date)* 24*60*1000),2) 最大更新状态
从用户。表t
其中t.register_date >= TO_DATE (:FIRSTDATE,'DD/MM/RRRR')
和t.register_date
1.从日期更改为时间戳数据类型将如何影响性能 (register_date上的索引,...)。时间戳上的索引是否不同或只是普通索引,我可以继续使用TO_DATE函数?
2.关于这一切,我还需要记住什么?
专家解答
需要注意的一些事项:
业绩不会受到影响。您可以像日期列一样索引时间戳列。
时间戳将使用更多的空间,但它不太可能你会注意到,除非你进入数十亿行。
尽量不要做任何隐式日期转换。所以确保你的谓词是:
减去两个时间戳不会给出数字,而是给出一个间隔,因此您需要调整代码,例如
为了得到零碎的东西,你使用提取,例如
业绩不会受到影响。您可以像日期列一样索引时间戳列。
时间戳将使用更多的空间,但它不太可能你会注意到,除非你进入数十亿行。
尽量不要做任何隐式日期转换。所以确保你的谓词是:
WHERE t.register_date >= TO_TIMESTAMP (:FIRSTDATE,'DD/MM/RRRR')
减去两个时间戳不会给出数字,而是给出一个间隔,因此您需要调整代码,例如
SQL> select systimestamp - (systimestamp-.123) from dual; SYSTIMESTAMP-(SYSTIMESTAMP-.123) ---------------------------------------------------------- +000000000 02:57:07.392000
为了得到零碎的东西,你使用提取,例如
SQL> with t as (
2 select systimestamp - (systimestamp-.123) x from dual
3 )
4 select
5 extract(day from x),
6 extract(hour from x),
7 extract(minute from x),
8 extract(second from x)
9 from t;
EXTRACT(DAYFROMX) EXTRACT(HOURFROMX) EXTRACT(MINUTEFROMX) EXTRACT(SECONDFROMX)
----------------- ------------------ -------------------- --------------------
0 2 57 7.304
1 row selected.
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




