Specifying an NLS parameter for an SQL function means that any user session
NLS parameters (or the lack of appropriate NLS parameters) will not affect evaluation
of the function.
This feature may be important for SQL statements that contain numbers and dates
as string literals. For example, the following query is evaluated correctly
only if the language specified for dates is American:
SELECT ENAME FROM EMP
WHERE HIREDATE > '1-JAN-01'
This can be made independent of the current date language
by specifying NLS_DATE_LANGUAGE:
SELECT ENAME FROM EMP
WHERE HIREDATE > TO_DATE('1-JAN-01','DD-MON-YY',
'NLS_DATE_LANGUAGE = AMERICAN')
Of course TO_DATE() provides a simpler way of making this
language-independent
SELECT ENAME FROM EMP
WHERE HIREDATE > TO_DATE('1-01-01','DD-MM-YY')
SELECT ENAME FROM EMP
WHERE HIREDATE > TO_DATE ('November 23, 1998', 'MONTH DD, YYYY')
NLS settings include Character set, Language and territory
The most common Character Sets are
WE8ISO8859P15 European English includes euro character
US7ASCII American English
The DATE datatype always stores a four-digit year internally.
If you use the standard date format DD-MON-YY
YY will assume a year in the range 1900-1999 -
it is strongly recommended you apply a specific format mask.
YEAR 2000 - Check
SELECT
to_char(add_months(to_date('01-JAN-1998', 'DD-MON-YYYY'),1 *
12),'DD-MON-YYYY') y1999,
to_char(add_months(to_date('01-JAN-1998', 'DD-MON-YYYY'),2 *
12),'DD-MON-YYYY') y2000,
to_char(add_months(to_date('01-JAN-1998', 'DD-MON-YYYY'),7 *
12),'DD-MON-YYYY') y2005,
to_char(add_months(to_date('01-JAN-1998', 'DD-MON-YYYY'),52 *
12),'DD-MON-YYYY') y2050
FROM
DUAL;
-- Expected output from script above
-- Y1999 Y2000 Y2005 Y2050
-- ----------- ----------- ----------- -----------
-- 01-JAN-1999 01-JAN-2000 01-JAN-2005 01-JAN-2050
Oracle Languages
e.g. NLS_LANGUAGE = ENGLISH
us AMERICAN
ar ARABIC
bn BENGALI
ptb BRAZILIAN PORTUGUESE
bg BULGARIAN
frc CANADIAN FRENCH
ca CATALAN
zhs SIMPLIFIED CHINESE
hr CROATIAN
cs CZECH
dk DANISH
nl DUTCH
eg EGYPTIAN
gb ENGLISH
et ESTONIAN
sf FINNISH
f FRENCH
din GERMAN DIN
d GERMAN
el GREEK
iw HEBREW
hu HUNGARIAN
is ICELANDIC
in INDONESIAN
i ITALIAN
ja JAPANESE
ko KOREAN
esa LATIN AMERICAN SPANISH
lv LATVIAN
lt LITHUANIAN
ms MALAY
esm MEXICAN SPANISH
n NORWEGIAN
pl POLISH
pt PORTUGUESE
ro ROMANIAN
ru RUSSIAN
sk SLOVAK
sl SLOVENIAN
e SPANISH
s SWEDISH
th THAI
zht TRADITIONAL CHINESE
tr TURKISH
uk UKRAINIAN
vn VIETNAMESE
The NLS_LANGUAGE above implicitly defines several other parameters:
NLS_DATE_LANGUAGE, NLS_SORT
Oracle Territories
e.g. NLS_TERRITORY = "UNITED KINGDOM"
ALGERIA
AMERICA
AUSTRALIA
AUSTRIA
BAHRAIN
BANGLADESH
BELGIUM
BRAZIL
BULGARIA
CANADA
CATALONIA
CHINA
CIS
CROATIA
CYPRUS
CZECH
CZECHOSLOVAKIA
DENMARK
DJIBOUTI
EGYPT
ESTONIA
FINLAND
FRANCE
GERMANY
GREECE
HONG KONG
HUNGARY
ICELAND
INDONESIA
IRAQ
IRELAND
ISRAEL
ITALY
JAPAN
JORDAN
KAZAKHSTAN
KOREA
KUWAIT
LATVIA
LEBANON
LIBYA
LITHUANIA
LUXEMBOURG
MALAYSIA
MAURITANIA
MEXICO
MOROCCO
NEW ZEALAND
NORWAY
OMAN
POLAND
PORTUGAL
QATAR
ROMANIA
SAUDI ARABIA
SINGAPORE
SLOVAKIA
SLOVENIA
SOMALIA
SOUTH AFRICA
SPAIN
SUDAN
SWEDEN
SWITZERLAND
SYRIA
TAIWAN
THAILAND
THE NETHERLANDS
TUNISIA
TURKEY
UKRAINE
UNITED ARAB EMIRATES
UNITED KINGDOM
UZBEKISTAN
VIETNAM
YEMEN
The NLS_TERRITORY implicitly defines several other parameters:
NLS_NUMERIC_CHARACTERS, NLS_CURRENCY, NLS_ISO_CURRENCY, NLS_DATE_FORMAT
NLS_MONETARY_CHARACTERS, NLS_CREDIT, NLS_DEBIT
If necessary these can be explicitly defined
e.g. NLS_NUMERIC_CHARACTERS = ",."
NLS_COMP
This provides a simple alternative to specifying NLS_SORT in
an SQL WHERE clause
NLS formats will affect SQL statements in
views, CHECK constraints, and triggers.
Related Commands
ALTER SESSION