我正在尝试以DD/MON/YYYY
格式输出日期,其中年份有4位数。我的变量返回一年有4位数(例如2000,而不是00),但是当我通过to_date
函数运行它时,它似乎将它指定为2位数。
我试图显示输出以隔离我今年给出的输入,并输出年变量是4位数,所以我不确定出了什么问题。
这是我的代码:
myDate1 := to_date(myDate1_DD || '/' || myDate1_MON || '/' || myDate1_YY , 'DD/MON/YYYY');
myDate2 := to_date(myDate2_DD || '/' || myDate2_MON || '/' || myDate2_YY , 'DD/MON/YYYY');
IF myDate1 > myDate2
THEN
-- return '01/JAN/01 > 01/JAN/99. The year for date1 is 2001'
return myDate1 || ' > ' || myDate2 || '. The year for date1 is ' || myDate1_YY;
ELSE
-- return '01/JAN/03 > 01/JAN/02. The year for date2 is 2003'
return myDate2 || ' > ' || myDate1 || '. The year for date2 is ' || myDate2_YY;
END IF;
所以基本上不是像01/JAN/03
这样的输出,我希望输出像01/JAN/2003
。
干杯
答案 0 :(得分:2)
您将看到NLS_DATE_FORMAT中指定的默认日期格式。
NLS_DATE_FORMAT指定用于TO_CHAR和TO_DATE函数的默认日期格式。此参数的默认值由NLS_TERRITORY确定。
此参数的值可以是任何有效的日期格式掩码,并且该值必须用双引号括起来。例如:
NLS_DATE_FORMAT =“MM / DD / YYYY”
看看你的是什么:
SELECT value FROM v$nls_parameters WHERE parameter ='NLS_DATE_FORMAT';
请参阅kordirko关于获取所需日期格式的评论:
return to_char(myDate1, 'dd/MON/yyyy') || ' > ' || to_char(myDate2, 'dd/MON/yyyy');
使用dbms_output而不是返回的示例:
DECLARE
myDate1_DD VARCHAR2(10) := '01';
myDate1_MON VARCHAR2(10) := 'JAN';
myDate1_YY VARCHAR2(10) := '2001';
myDate2_DD VARCHAR2(10) := '01';
myDate2_MON VARCHAR2(10) := 'JAN';
myDate2_YY VARCHAR2(10) := '2003';
myDate1 DATE;
myDate2 DATE;
BEGIN
myDate1 := to_date(myDate1_DD || '/' || myDate1_MON || '/' || myDate1_YY , 'DD/MON/YYYY');
myDate2 := to_date(myDate2_DD || '/' || myDate2_MON || '/' || myDate2_YY , 'DD/MON/YYYY');
IF myDate1 > myDate2
THEN
-- return '01/JAN/01 > 01/JAN/99. The year for date1 is 2001'
DBMS_OUTPUT.put_line( to_char(myDate1, 'dd/MON/YYYY') || ' > ' || to_char(myDate2, 'dd/MON/YYYY') || '. The year for date1 is ' || myDate1_YY);
ELSE
-- return '01/JAN/03 > 01/JAN/02. The year for date2 is 2003'
DBMS_OUTPUT.put_line( to_char(myDate2, 'dd/MON/YYYY') || ' > ' || to_char(myDate1, 'dd/MON/YYYY') || '. The year for date2 is ' || myDate2_YY);
END IF;
END;
/
使用这些输入,dbms_output结果为:“01 / JAN / 2003> 01 / JAN / 2001.date2的年份为2003”