【发布时间】:2017-04-17 22:53:43
【问题描述】:
我有一个列名 'Cos_Date',其值类似于 14APR2017:00:00:00。
但是,对于新的列名称'Arrival_Date',我想保留日期信息但省略时间,并将数据类型保留为Date 而不是Character。例如,2017 年 4 月 14 日。
我试过了:
select TO_CHAR(Cos_Date, 'DD-MON-YYYY') ARRIVAL_DATE
但是会删除时间信息,但是数据类型变成Character。
我在这个网站上搜索过,两个都试过了:
select TO_DATE(TO_CHAR(Cos_Date, 'DD-MON-YYYY'), 'DD-MON-YYYY') ARRIVAL_DATE
和:
select TRUNC(Cos_Date) ARRIVAL_DATE
但它不会省略时间信息。
我可以试试别的吗?
谢谢!
【问题讨论】:
-
在 Oracle 中没有“纯”日期数据类型。日期数据类型始终包含时间组件。您可以做的最好的事情是让日期的时间分量为 00:00:00。为什么这会困扰你?甲骨文的这种“限制”并没有造成任何问题。 (由于缺少“纯”时间数据类型,有个问题,没有附加日期,但这与您的问题无关。)
-
哦,我明白了。由于我使用 SAS 调用 Oracle 并将让该表加入另一个包含数据类型为“日期”的 SAS 表。这让我很困扰。也许我可以再做一个 data / proc sql 步骤。谢谢@mathguy
-
我不知道 SAS 如何与 Oracle 一起工作,但如果它完全可以工作,并且如果 SAS 具有“纯”日期数据类型,我假设它被转换为时间设置为 00 的日期甲骨文中的:00:00。如果您有两个具有此类日期列的 SAS 表,您可以简单地在 Oracle 中将它们连接起来,所有日期的时间部分为 00:00:00 不会导致连接出现问题。
-
@mathguy 对,我去看看,这是可行的。