当前位置: 首页 > 面试题库 >

在Oracle中进行日期扣除的问题

郁烨
2023-03-14
问题内容

我在对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';

(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   is3 2012/12/19 17:12:50 2012/12/19 19:12:10 1,52222222222222222222222222208    0    1   31  19
Cancelled   id4 2012/12/19 18:12:13 2012/12/19 19:12:23 0,65277777777777777777777777768    0    0   39  10

如我们所见,当我复制日期并使用double减去了日期时,日期被错误地减去了:

select (to_date('2013/03/25 13:03:17', 'yyyy/MM/dd HH24:MI:SS') - 
to_date('2013/03/25 12:03:14', 'yyyy/MM/dd HH24:MI:SS'))
from dual;

我得到正确的结果…我不知道发生了什么…将不胜感激。


问题答案:

您显示的日期格式不正确。

mm是一个月,而不是分钟。因此,您要在时间显示中重复月份。

您需要:('yyyy/mm/dd hh24:mi:ss'请注意mi格式掩码中的)



 类似资料:
  • 问题内容: 跟进查询如何工作,找不到说明跟进查询如何工作的文档,是否还有其他类似的强制转换值查询? SELECT date‘2017-01-01’FROM dual; 提供结果1/1/2017 问题答案: 您的查询使用的是日期文字。从Oracle文档中: 您可以将DATE值指定为字符串文字,或者可以使用TO_DATE函数将字符或数字值转换为日期值。DATE文字是Oracle Database接受T

  • 问题内容: 有没有一种方法可以在oracle中平均多个日期?平均没有任何好处。 谢谢。 问题答案: “平均日期”的定义是主观的,但是您可以将日期转换为儒略数字,然后将其平均,四舍五入,然后转换回日期。

  • 问题内容: 在使用SQL时,我是一个新手,我想做的是仅使用月份和年份选择waterUsage和lectriccityUsage,然后从上一年中选择waterUsage和lectriccityUsage。 但是,我似乎无法找出使用日期的适当方法来完成这项工作。 表:每月帐单 或者 问题答案: 一种选择是使用: 假设您实际上使用的是Oracle,而不是SQL Server。 如果需要,然后继续,然后在

  • 日期在Oracle中是如何存储的?例如,我知道大多数系统使用Epoch时间来确定它是什么时间。通过计算距离1970年1月1日有多少秒。Oracle也这样做吗? 我问这个问题的原因是我注意到,如果在Oracle中取两个日期,然后减去它们,就会得到一个浮点数,即两个日期之间的天数。 示例 将返回类似的内容(取决于时间) 现在,Oracle是在进行转换并输出该格式,还是在存储日期时,它离某个时间段有多少

  • 我一直试图从Salesforce查询转换日期字段,并将该记录插入到Oracle表中。我在格式上遇到了很多麻烦,因为输入被视为字符串,所以Date{format:“yyyy-mm-dd''hh:mm:ss”}不起作用。 最终我找到了一个答案,我想在这里分享它,因为它是一个字符串,可以通过字符串操作来解决。下面是我的答案:created_at:(payload.createddate splitby“

  • 如何在oracle中检查表中特定列的日期格式?oracle日期数据类型是否能够存储这两种格式(美国和欧洲)?如果是这样,有没有办法区分哪个是月份,哪个是日期?