是否有任何实用程序从Oracle to_char
格式模式返回java.text.SimpleDateFormat
模式?Oracle日期模式到java日期模式
create or replace type type_sample as object (
f_id number,
f_name varchar2(100),
f_start_date date,
f_end_date date
)
/
SET SERVEROUTPUT ON
DECLARE
xmltype1 SYS.XMLType;
message type_sample;
BEGIN
message := new type_sample(1, 'Manohar', current_date, sysdate);
xmltype1 := XMLtype.createXML(message);
DBMS_OUTPUT.PUT_LINE('out_errm : '|| xmltype1.getStringVal());
END;
/
<TYPE_SAMPLE><F_ID>1</F_ID><F_NAME>Manohar</F_NAME><F_START_DATE>26-JAN-13</F_START_DATE>**<F_END_DATE>26-JAN-13</F_END_DATE>**</TYPE_SAMPLE>
我有上面的XML来自DataBase。这里的日期格式是基于会话运行上述代码的不同格式。
我在这里可以做的是,可以从java端获得该会话的dateformat模式。如果我可以将dateformat模式(oracle db)转换为java.text.SimpleDateFormat
模式,我的问题就解决了。你能帮我解决吗?
我在这里没有得到预期的答案。可能是我的介绍没有清楚地解释问题。
现在我会问一个简单的问题。据我所知java.text.SimpleDateFormat毕竟是java.text.DateFormat的一个实现。日期格式的此实现可以了解以下模式字母
G Era designator
y Year
M Month in year
w Week in year
W Week in month
D Day in year
d Day in month
F Day of week in month
E Day in week
a Am/pm marker
H Hour in day (0-23)
k Hour in day (1-24)
K Hour in am/pm (0-11)
h Hour in am/pm (1-12)
m Minute in hour
s Second in minute
S Millisecond
z Time zone
Z Time zone
是否有java.text.DateFormat中的任何其他实现,通过它可以了解其他一些模式信集团?如果有的话,请让我知道。
我通常不会主张将日期放入字符串中,但是因为它将隐式地为XML负载完成......无论如何将对象字段设置为varchars并使用'to_char ()'在创建对象时使用明确的格式掩码?将会话NLS排除在等式之外,而Java方面只需要识别一种格式。不知道您是否可以在对象内强制执行格式 - 可能是接受日期并进行转换的构造函数? –
谢谢亚历克斯。但是我们有很多现有的类型,其中日期字段已经存在。重新定义这些类型对于我和我们的团队来说是一项乏味的任务。我的疑问是,我可以将会话的nls格式字符串传递给java端。有没有什么办法从该数据库的nls字符串中绘制java.text.SimpleDateFormat字符串?因为格式化模式不同于Oracle到Java。 例如05-Feb-2013在oracle中被表示为DD-MON-YYYY,并且在java中它是dd-MMM-yyyy。 – Manohar
您不能将'NLS_DATE_FOTMAT'设置为从应用程序启动的所有会话都相同吗?当连接打开时,或者使用登录触发器显式地使用'alter session',或许? –