주 첫날의 날짜를 가져오고 싶지만 NLS 매개 변수에 종속되기를 원합니다. 나는 미국에 그것을 실행할 때 말, NLS에 따라 1 주일을 시작하는 방법
select trunc(to_date(sysdate,'dd-mm-yy'),'iw')from dual;
가 어떻게 그것을 따라 할 수 있습니다 .. 그것은 나에게 일요일 날짜를 제공해야하지만, 터키에서 나에게 월요일을 제공해야합니까?
주 첫날의 날짜를 가져오고 싶지만 NLS 매개 변수에 종속되기를 원합니다. 나는 미국에 그것을 실행할 때 말, NLS에 따라 1 주일을 시작하는 방법
select trunc(to_date(sysdate,'dd-mm-yy'),'iw')from dual;
가 어떻게 그것을 따라 할 수 있습니다 .. 그것은 나에게 일요일 날짜를 제공해야하지만, 터키에서 나에게 월요일을 제공해야합니까?
According to the documentation, trunc(sysdate, 'IW')
은 ISO 주 첫날 인 월요일과 같은 요일을 제공합니다. 네가 보았 듯이, 그것은 분명 NLS에 의존하지 않는다.
W
을 사용하면 비 ISO, NLS 종속 버전을 제공 할 수 있다고 생각할 수 있지만, 그 달의 첫 번째 날과 같은 요일이 아닌 다른 것이 있습니다. 지금 실행하면 7 월 1 일이 월요일 이었으므로 설정에 관계없이 월요일에 알려줍니다.
그래서 당신도 D
, DY
또는 DAY
필요 - 모두가 동일하게 동작 thaey :
alter session set nls_territory = 'AMERICA';
select trunc(sysdate, 'D') from dual;
TRUNC(SYS
---------
14-JUL-13
alter session set nls_territory = 'TURKEY';
select trunc(sysdate, 'D') from dual;
TRUNC(SYSD
----------
15/07/2013
to_date(sysdate,'dd-mm-yy')
을하고있다.
sysdate
은 이미 날짜입니다. 해당 날짜에서 문자열을 사용하여
NLS_DATE_FORMAT
을 사용하는 implcit 변환을 수행 한 다음
dd-mm-yy
을 사용하여 명시 적으로 날짜로 다시 변환합니다. 뿐만 아니라
NLS_DATE_FORMAT
이 (대략 여유 꽤가) 일치하지 않습니다 당신의 (가)
dd-mm-yy
명시 적으로 사용하는 경우 무의미한 것으로, 그것은 휴식 것이된다
alter session set nls_date_format = 'dd/mm/yyyy';
select to_date(sysdate,'dd-mm-yy') from dual;
TO_DATE(SY
----------
18/07/2013
alter session set nls_date_format = 'dd-mon-rr';
select to_date(sysdate,'dd-mm-yy') from dual;
TO_DATE(S
---------
18-jul-13
alter session set nls_date_format = 'mm/dd/yyyy';
select to_date(sysdate,'dd-mm-yy') from dual;
select to_date(sysdate,'dd-mm-yy') from dual
*
ERROR at line 1:
ORA-01843: not a valid month
alter session set nls_date_format = 'yyyy-mm-dd';
select to_date(sysdate,'dd-mm-yy') from dual;
select to_date(sysdate,'dd-mm-yy') from dual
*
ERROR at line 1:
ORA-01861: literal does not match format string
... 등 그리고 당신의 NLS_DATE_FORMAT
을 상속 어쨌든 NLS_TERRITORY
에서부터 여러 지역을 다룰 예정이라면 문제가 될 수 있습니다.
iso week를 사용하면 모든 지역에서 동일합니다. 항상 월요일을 반환합니다.
대신 이것을 사용하십시오.
select sysdate your_date,
trunc(sysdate,'IW') iso_start_of_week,
to_char(sysdate,'D') your_territory_day,
trunc(sysdate)- to_char(sysdate,'D') + 1 this_is_what_u_want
from dual