在提出这个问题之前做了很多搜索,例如How to convert a string into date format,How to convert a string into date,但仍然无法弄清楚。
所以,问题是如何将这些字符串日期转换为Oracle
中的日期:
" 2016-08-15 10:45:30" (字符串类型) - > 20160815(日期类型)
" 20160815104530" (字符串类型) - > 20160815(日期类型)
任何想法都将受到赞赏。
答案 0 :(得分:1)
您使用to_date()
:
select to_date(substr(str1, 1, 10), 'YYYY-MM-DD')
select to_date(substr(str2, 1, 8), 'YYYYMMDD')
答案 1 :(得分:1)
你在这里混合两件事:
第一种是将Oracle VARCHAR2
中的String数据类型转换为DATE
数据类型。
DATE
数据类型的精度为秒,您无法更改。 DATE
数据类型将始终为您提供日期和时间组件,即年,月,日,小时,分钟和秒:Oracle SQL Data Type Documentation
但是,您要问的第二部分是关于如何格式化检索日期。这在运行报告或其他类型的日期可视化显示时很有用。例如,在美国,您很可能希望您的日期列以MM/DD/YYYY
格式显示,而世界上其他任何地方您最有可能想要使用DD/MM/YYYY
。 Oracle允许您通过告诉它要使用的NLS_DATE_FORMAT
来做到这一点。您可以为每个单独的会话以及数据库级别设置该参数,由您(和您的DBA)决定您希望在何时何地设置该参数。在您的情况下,您可以通过ALTER SESSION
命令:
SQL> ALTER SESSION SET nls_date_format='YYYY-MM-DD';
Session altered.
SQL> SELECT TO_DATE('2016-08-15 10:45:30', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
TO_DATE(
----------
2016-08-15
SQL> SELECT TO_DATE('20160815104530', 'YYYYMMDDHH24MISS') FROM DUAL;
TO_DATE(
----------
2016-08-15