如何去除日期字段中的时间戳(不是来自日期字段,而是varchar保存日期/时间戳数据)

时间:2018-04-10 18:08:55

标签: sql oracle

所以我的数据看起来像这样:

DATE
2019 04 19 03:00:00

我希望它看起来像这样:

DATE
2019 04 19

OR

DATE
04-19-2019 

唯一的问题是持有数据的字段是varchar,因此我在下面尝试的内容不起作用。

select to_char(DATE, 'YYYY/MM/DD') as dateonly, from table_name;

我也尝试过使用以下内容:

select trunc(DATE) as date_only from table_name;

但我得到的结果如下:

 2019 04 19 00:00:00

我想上面的方法可行,但是有没有办法可以摆脱上面使用的截断方法产生的00:00:00尾声?

3 个答案:

答案 0 :(得分:2)

如果您的数据格式总是像 yyyy mm dd hh24:mi:ss 那么您可以使用以下查询来获取子字符串:

SELECT SUBSTR('2019 04 19 03:00:00', 1, 10)

参考:https://docs.oracle.com/database/121/SQLRF/functions196.htm#S

答案 1 :(得分:0)

你有文字。你想要约会。

所以请使用TO_DATE。

select trunc(to_date('2019 04 19 03:00:00','YYYY MM DD HH:MI:SS') )
from dual;

trunc将删除时间段。然后,您将以适当的DATE格式获取数据,以便您可以使用数据库中提供的所有日期特定功能。

enter image description here

答案 2 :(得分:0)

首先,转换为DATE

SELECT TO_DATE('2019 04 19 03:00:00', 'YYYY MM DD HH24:MI:SS') FROM dual;

然后,从DATE您可以使用TRUNC() ,您可以使用TO_CHAR()按照您希望的方式对其进行格式化:

SELECT TO_CHAR( TO_DATE('2019 04 19 03:00:00', 'YYYY MM DD HH24:MI:SS'), 'YYYY MM DD' ) FROM dual;

希望这有帮助。