Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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
在oracle中如何将提取的十进制日期转换为Datetime_Oracle_Plsql_Etl_Data Conversion - Fatal编程技术网

在oracle中如何将提取的十进制日期转换为Datetime

在oracle中如何将提取的十进制日期转换为Datetime,oracle,plsql,etl,data-conversion,Oracle,Plsql,Etl,Data Conversion,我从EXCEL文件中提取了日期,该文件为42885.425330301,EXCEL格式的日期为DD-MON-RR HH:MI:SS UTC。 我想使用oracle函数将十进制值转换为datetime。 如何继续?我真的不知道使用十进制值计算oracle日期的起点是什么,但如果您采用以下方法: select to_date('01/01/1900', 'dd/mm/yyyy')+42885.4253360301 as my_date from dual; 你的结果是 MY_DATE

我从EXCEL文件中提取了日期,该文件为
42885.425330301
,EXCEL格式的日期为
DD-MON-RR HH:MI:SS UTC
。 我想使用oracle函数将十进制值转换为
datetime

如何继续?

我真的不知道使用十进制值计算oracle日期的起点是什么,但如果您采用以下方法:

select to_date('01/01/1900', 'dd/mm/yyyy')+42885.4253360301 as my_date from dual;
你的结果是

MY_DATE           
-------------------
01/06/2017 10:12:29

这意味着您可以通过将excel值添加到起点来对其应用简单的日期操作。哪一个起点?我真的不知道,但希望这可以作为一个提示。

我真的不知道使用十进制值计算oracle日期的起点是什么,但如果您采取以下措施:

select to_date('01/01/1900', 'dd/mm/yyyy')+42885.4253360301 as my_date from dual;
你的结果是

MY_DATE           
-------------------
01/06/2017 10:12:29

这意味着您可以通过将excel值添加到起点来对其应用简单的日期操作。哪一个起点?我真的不知道,但希望这可以作为一个提示。

这个
十进制值
,是天数、小时数、分钟数、秒数还是其他数字?我不知道。我使用普及工具从EXCEL文件中提取了日期,并得到了这个十进制值。这个
十进制值是多少天、小时、分钟或秒,或者其他什么?不知道。我使用普适工具从EXCEL文件中提取了日期,并得到了这个十进制值。通过反向操作,我将他的十进制值插入EXCEL并转换为日期,以确定他实际开始的日期:2017年5月30日10:12:29。将其输入Oracle并减去42885.425330301得到:30-dec-1899 00:00:00,因此您的想法是正确的,然而,我怀疑您需要使用1899年12月30日作为“基准”日期(而不是1900年1月1日),然后再将其加上……)但是,是的,这可能也是我所知道的最简单的方法。谢谢@Ditto对答案的补充,让我们看看这对Tanmay是否有帮助。你正走在正确的轨道上。Excel确实从1900年1月1日开始。然而,微软很早就犯了一个错误,我相信他们决定永远也不修复它,这样旧代码就不会崩溃。也就是说,他们认为1900年是闰年,这导致了所有这些问题。您可以在Excel中很容易地测试这一点(看到1900年2月28日之后的日期是令人震惊的1900年2月29日,尽管1900年不是闰年)。同上和@JairHernandez它在jair查询中工作我使用了日期1899年12月30日,它工作正常。谢谢:)倒转过来,我将他的十进制值插入Excel并转换为日期,以确定他实际开始的日期:2017年5月30日10:12:29。将其输入Oracle并减去42885.425330301得到:30-dec-1899 00:00:00,因此您的想法是正确的,然而,我怀疑您需要使用1899年12月30日作为“基准”日期(而不是1900年1月1日),然后再将其加上……)但是,是的,这可能也是我所知道的最简单的方法。谢谢@Ditto对答案的补充,让我们看看这对Tanmay是否有帮助。你正走在正确的轨道上。Excel确实从1900年1月1日开始。然而,微软很早就犯了一个错误,我相信他们决定永远也不修复它,这样旧代码就不会崩溃。也就是说,他们认为1900年是闰年,这导致了所有这些问题。您可以在Excel中很容易地测试这一点(看到1900年2月28日之后的日期是令人震惊的1900年2月29日,尽管1900年不是闰年)。同上和@JairHernandez它在jair查询中工作我使用了日期1899年12月30日,它工作正常。谢谢:)