0

我有一个返回日期的函数(实际是时间戳,日期+时间)。在表格中,它看起来像这样,“2010-09-05 17:33:00”。当我从 sql 脚本调用我的函数时,

select my_package.my_function('2010-09-05') 
  from dual.

我会在结果中得到时间。

但是如果我在测试窗口中运行相同的程序,我只会收到日期而不是时间。

这怎么可能?

4

3 回答 3

4

您正在看到 NLS_DATE_FORMAT 设置的效果。根据需要设置。例如:

alter session set NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss";
select my_package.my_function('2010-09-05') from dual;

正确查看输出。

或 TO_CHAR 输出。

select to_char(my_package.my_function('2010-09-05'), 'yyyy-mm-dd hh24:mi:ss') from dual;
于 2012-11-27T10:17:25.597 回答
2

测试窗口是什么意思?

如果您的意思是 SQL+,那么将应用一种格式,您可以使用

alter session set nls_date_format='DD/MM/YYYY HH24:MI:SS';

在 SQL+ 会话开始时执行此操作。

于 2012-11-27T10:19:19.293 回答
0

当我简单地写ALTER .... 然后我在程序中工作时出错。但是,我在下面添加了脚本,它对我有用。

execute immediate 'ALTER SESSION SET NLS_DATE_FORMAT = ''DD/MM/YYYY HH24:MI:SS''';
于 2017-10-31T08:07:25.013 回答