与文化无关的日期格式

时间:2014-11-07 11:56:32

标签: oracle plsql

我正在调用具有参数日期的Oracle程序。我如何指定日期的格式,以便无论它使用什么样的全球化,它都被oracle识别?

E.g。

create or replace procedure MyProc(p_valid_date in date) ...

客户端调用proc,我应该如何将p_valid_date指定为字符串......? 如果我使用例如' 01212014',即DDMMYYYY,那么它将无法使用美国设置。如果我使用美国设置,它将无法在英国工作。等

在SQL Server中,我使用的是文化不变的YYYYMMDD格式,但我无法在Oracle文档中找到有关文化不变格式的任何内容,我尝试过的各种格式似乎总是绑定到文化。

更新 我不想使用函数,因为我的客户端执行纯函数调用。这是我客户的限制。我知道我可以将参数更改为字符串然后在过程中使用to_date转换字符串,但这似乎是一个非常糟糕的设计。

谢谢

1 个答案:

答案 0 :(得分:4)

ISO日期格式是您正在寻找的“不变”:

SQL> alter session set nls_date_format='dd/mon.yyyy';

Session altered.

SQL> select sysdate from dual;

SYSDATE
-----------
07/nov.2014

SQL> select to_char(DATE '2014-12-31') from dual;

TO_CHAR(DAT
-----------
31/dec.2014

您可以使用此表示法:DATE '2014-12-31'