我有一个返回日期的函数(实际是时间戳,日期+时间)。在表格中,它看起来像这样,“2010-09-05 17:33:00”。当我从 sql 脚本调用我的函数时,
select my_package.my_function('2010-09-05')
from dual.
我会在结果中得到时间。
但是如果我在测试窗口中运行相同的程序,我只会收到日期而不是时间。
这怎么可能?
您正在看到 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;
测试窗口是什么意思?
如果您的意思是 SQL+,那么将应用一种格式,您可以使用
alter session set nls_date_format='DD/MM/YYYY HH24:MI:SS';
在 SQL+ 会话开始时执行此操作。
当我简单地写ALTER .... 然后我在程序中工作时出错。但是,我在下面添加了脚本,它对我有用。
execute immediate 'ALTER SESSION SET NLS_DATE_FORMAT = ''DD/MM/YYYY HH24:MI:SS''';