Oracle 使用 SQLLDR 进行日期减法

发布于 2024-08-06 00:21:28 字数 610 浏览 10 评论 0原文

我正在尝试将 NetBackup 统计信息导入 Oracle。我真正想要的一个字段是 ACTIVE START,但它无法从 bpdbjobs -report 中获得。可用的是 ACTIVEELAPSED,所以我想从导入时的 END TIME 中减去它,如下所示:

END TIME 格式:26/09/2009 10:46:20 PM

ELAPSED TIME 格式:028:32:35(即小时,分钟、秒)

SQL*Loader 控制文件(相关行):

ACTIVE_ELAPSED      BOUNDFILLER POSITION(261:270),
END_TIME            POSITION(271:293) char "to_date(:End_time, 'dd/mm/yyyy hh:mi:ss AM')",
ACTIVE_START        EXPRESSION "to_date(:END_TIME, 'dd/mm/yyyy hh:mi:ss AM') - TO_DSINTERVAL(':ACTIVE_ELAPSED')",

我的谷歌搜索告诉我,间隔没有格式掩码,所以我目前很困惑(Oracle SQL 不是我的正常工作!)

乔纳森

I am trying to import NetBackup statistics into Oracle. One field I really want is ACTIVE START, but it isn't available from bpdbjobs -report. What is available is ACTIVEELAPSED, so I want to subtract that from the END TIME on import as follows:

END TIME Format: 26/09/2009 10:46:20 PM

ELAPSED TIME Format: 028:32:35 (which is hours, minutes, seconds)

SQL*Loader Control File (Relevant lines):

ACTIVE_ELAPSED      BOUNDFILLER POSITION(261:270),
END_TIME            POSITION(271:293) char "to_date(:End_time, 'dd/mm/yyyy hh:mi:ss AM')",
ACTIVE_START        EXPRESSION "to_date(:END_TIME, 'dd/mm/yyyy hh:mi:ss AM') - TO_DSINTERVAL(':ACTIVE_ELAPSED')",

My googling informs me that there are no format masks for Interval, so I am currently stumped (Oracle SQL is not my normal gig!)

Jonathan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

终难遇 2024-08-13 00:21:28

您可以分割经过的时间并将其转换为天数,然后您可以从 END_TIME 中减去它:

to_date(:END_TIME, 'dd/mm/yyyy hh:mi:ss AM')
- substr(:elapsed_time, 1, instr(:elapsed_time, ':') - 1) / 24
- substr(:elapsed_time, 
         instr(:elapsed_time, ':') + 1,
         instr(:elapsed_time, ':', 1, 2) - instr(:elapsed_time, ':') -1) / 24 / 60 
- substr(:elapsed_time, instr(:elapsed_time, ':', 1, 2) + 1) / 24 / 60 / 60

you could split the elapsed time and convert it in (fraction of) days, then you can substract it from END_TIME:

to_date(:END_TIME, 'dd/mm/yyyy hh:mi:ss AM')
- substr(:elapsed_time, 1, instr(:elapsed_time, ':') - 1) / 24
- substr(:elapsed_time, 
         instr(:elapsed_time, ':') + 1,
         instr(:elapsed_time, ':', 1, 2) - instr(:elapsed_time, ':') -1) / 24 / 60 
- substr(:elapsed_time, instr(:elapsed_time, ':', 1, 2) + 1) / 24 / 60 / 60
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文