如何获取指定形式的sysdate的date型数据?

一般我们用select sysdate from dual可以获得系统时间。这里是个date型的数据,但是格式不能指定。
用select to_char(sysdate,'YYYY-MM-DD') from dual可以获得指定格式,但是是varchar型的数据。
用select to_date(to_char(sysdate,'YYYY-MM-DD'),'YYYY-MM-DD') from dual既可以指定格式,也是date型的数据。但是我觉得这个SQL很麻烦。请问有没有简单一点的方法?

1.临时修改

SQL> alter session set nls_date_format='yyyy-mm-dd';

这种方法只能改掉在当前会话里的日期显示格式,当重新建立一个会话的时候,必须重新执行该命令。

2.改变oracle默认的日期显示格式

ON UNIX :

change .profile NSL_DATE_FORMAT=YYYY-MM-DD;

export NLS_DATE_FORMAT

On windows:

在注册表的KEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0
添加字串值NLS_DATE_FORMAT.将其值设为YYYY-MM-DD

再或者,自己写个ORACLE函数,转换时间格式,不过你得先学会怎么写ORACLE函数好像
:D :D :D :D :D :D :D :D :D :D :D :D

你的需求就是得这么双重转换,oracle没提供更直接的方式了