我想将日期转换为Shamsi/波斯语格式,但它没有很好地工作。我的代码:
SELECT TO_CHAR('10-JUN-18', 'dd-mm-yy','nls_calendar=persian')
FROM dual;
我希望它是这样的:20-03-97
# # #TO_CHAR( date_value format_model nls_parameters )
takes需要一个DATE
data typ数据类型作为第一个参数。
'10-JUN-18'不是DATE数据类型;它是一个字符串字面值(恰好看起来像日期)。Oracle将尝试执行从字符串到日期的隐式转换,但这种隐式转换是失败的(依赖隐式转换是不好的做法)。
如果你使用一个DATE字面值,那么你的代码工作:
SELECT TO_CHAR(DATE '2018-06-10', 'dd-mm-yy','nls_calendar=persian') AS dt
FROM DUAL;
DT
20-03-97
或者你可以显式地将字符串字面值转换为日期,然后再将其转换回来:
SELECT TO_CHAR(
TO_DATE('10-JUN-18', 'DD-MON-RR', 'NLS_DATE_LANGUAGE=English'),
'dd-mm-yy',
'nls_calendar=persian'
) AS dt
FROM DUAL;
DT
20-03-97
db<此处小提琴