所以我的数据看起来像这样:
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尾声?
答案 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格式获取数据,以便您可以使用数据库中提供的所有日期特定功能。
答案 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;
希望这有帮助。