PL/SQL oracle,使用日期和时间的测试窗口

Posted

技术标签:

【中文标题】PL/SQL oracle,使用日期和时间的测试窗口【英文标题】:PL/SQL oracle, test window using date and time 【发布时间】:2012-11-27 10:15:35 【问题描述】:

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

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

我会在结果中获得时间。

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

这怎么可能?

【问题讨论】:

可能只是工具格式化日期的方式。尝试使用明确的日期格式的 to_char。 【参考方案1】:

您将看到 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;

【讨论】:

【参考方案2】:

测试窗口是什么意思?

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

进行更改
alter session set nls_date_format='DD/MM/YYYY HH24:MI:SS';

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

【讨论】:

【参考方案3】:

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

execute immediate 'ALTER SESSION SET NLS_DATE_FORMAT = ''DD/MM/YYYY HH24:MI:SS''';

【讨论】:

以上是关于PL/SQL oracle,使用日期和时间的测试窗口的主要内容,如果未能解决你的问题,请参考以下文章

Oracle PL/SQL,如何使用简单的替换变量和months_between计算出生日期的年龄

如何使用间隔 1 分钟在两个日期之间将时间序列数据生成到 Oracle PL/SQL 中的表中?

ORACLE PL/SQL - 使用 SYSDATE 检索特定日期的数据时出现检索问题

oracle sql pl/sql 如何减去日期/工作周

在 PL/SQL Developer 中运行的日期查询显示时间,但在 Oracle SQL Developer 中不显示

pl/sql 存储过程从日期等于存储过程参数的表中进行选择