oracle - How to get the first day of the week, depending on NLS -
i want date of first day of week want dependant nls parameters. , when run on america should give me sundays date, in turkey should give me monday..
select trunc(to_date(sysdate,'dd-mm-yy'),'iw')from dual; how can make dependant?
according documentation, trunc(sysdate, 'iw') gives same day of week first day of iso week, monday. you've seen, not nls-dependent.
you might think using w give non-iso, nls-dependent, version, different - same day of week first day of month. run now, give monday, regardless of settings, since july 1st monday.
so need either d, dy or day - thaey behave same:
alter session set nls_territory = 'america'; select trunc(sysdate, 'd') dual; trunc(sys --------- 14-jul-13 alter session set nls_territory = 'turkey'; select trunc(sysdate, 'd') dual; trunc(sysd ---------- 15/07/2013 incidentally, original query doing to_date(sysdate,'dd-mm-yy'). sysdate date. you're forcing implcit conversion date string, use nls_date_format, , explicit conversion date using dd-mm-yy. not pointless, break if nls_date_format didn't match (roughly, there quite bit of leeway) dd-mm-yy use explicitly:
alter session set nls_date_format = 'dd/mm/yyyy'; select to_date(sysdate,'dd-mm-yy') dual; to_date(sy ---------- 18/07/2013 alter session set nls_date_format = 'dd-mon-rr'; select to_date(sysdate,'dd-mm-yy') dual; to_date(s --------- 18-jul-13 alter session set nls_date_format = 'mm/dd/yyyy'; select to_date(sysdate,'dd-mm-yy') dual; select to_date(sysdate,'dd-mm-yy') dual * error @ line 1: ora-01843: not valid month alter session set nls_date_format = 'yyyy-mm-dd'; select to_date(sysdate,'dd-mm-yy') dual; select to_date(sysdate,'dd-mm-yy') dual * error @ line 1: ora-01861: literal not match format string ... etc. , nls_date_format inherited nls_territory default, issue if you're expecting deal multiple regions anyway.
Comments
Post a Comment