您在这里混合了两两件事:
首先是一个字符串数据类型的转换,在Oracle VARCHAR2
成DATE
数据类型。 DATE
数据类型的精度为秒,你不能改变它。 A DATE
数据类型将始终为您提供日期和时间组件,即年,月,日,小时,分和秒:Oracle SQL Data Type Documentation
但是,您所要求的第二部分是关于如何格式化日期检索。这在运行报表或其他类型的日期显示时很有用。例如,在美国,您最希望您的日期列以MM/DD/YYYY
的格式显示,而世界上其他任何地方最有可能想要使用DD/MM/YYYY
。 Oracle通过告诉它你想使用什么来实现这一点。您可以为每个单独的会话以及数据库级别设置该参数,由您(和您的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
你想保留时间部分吗?因为Oracle的DATE类型支持日期+时间。 – sstan
我还应该提到,您链接的帖子不适用于Oracle。你不能指望在SQL Server或Excel的帖子中找到Oracle有用的信息。为什么不去源呢? [TO_DATE官方文档](https://docs.oracle.com/database/121/SQLRF/functions219.htm#SQLRF06132) – sstan
我只想得到日期,没有时间部分需要 – triffic