반응형
요일 구하기 함수 weekday() 주의
특정일자의 요일을 구하는 로직은 프로그램을 짤때 많이들 사용 하는 로직입니다.
주로 사용 하는 몇몇 랭귀지의 예를 보면
[javascript]
var d = new Date();
d.getDay();
return : 0 = Sunday, 1 = Monday, .... 6 = Saturday
[PHP]
$date = date('w');
return : 0 = Sunday, 1 = Monday, .... 6 = Saturday
즉, 대부분의 프로그래밍 랭귀지에서는
0 = Sunday, 1 = Monday, .... 6 = Saturday 로 리턴됩니다.
전통적으로 sunday가 0부터 시작이지요.
Database에서도 동일한 함수들을 제공 합니다.
단, ODBC에서 표준은 요일의 리턴 값이 다릅니다.
1 = Sunday, 2 = Monday,..... 7 = Saturday
* 일요일이 0이 아닌 1 입니다.
[oracle]
SELECT TO_CHAR( TO_DATE('20150816','YYYYMMDD')+LEVEL, 'D' ) FROM DUAL;
return : 1 = Sunday, 2 = Monday,..... 7 = Saturday
[mssql]
SELECT DATEPART(DW, GETDATE()))
Return : 1 = Sunday, 2 = Monday,..... 7 = Saturday
[MySQL, MariaDB]
SELECT DAYOFWEEK(NOW())
return : 1 = Sunday, 2 = Monday,..... 7 = Saturday
문제는 MySQL, MariaDB 에서
제공 하는 WEEKDAY()는 리턴이 ODBC 표준을 따르지 않고 다른 값을 리턴합니다.
SELECT WEEKDAY(NOW())
Return : 0 = Monday, 1 = Tuesday,..... 6 = Sunday
즉, 가능하면 표준을 따르는 DAYOFWEEK 를 사용하는게 좋을듯 합니다.
정리 하면 2016-08-29(월요일)의 요일값을 구할 때
DB |
요일구하는 함수 |
리턴 |
비고 |
Oracle |
SELECT TO_CHAR( TO_DATE('20160829','YYYYMMDD')+LEVEL, 'D' ) FROM DUAL; |
2 |
ODBC 표준 |
MSSQL |
SELEST DATEPART(DW, GETDATE())) |
2 |
ODBC 표준 |
Mysql, mariadb |
SELECT DAYOFWEEK(NOW()) |
2 |
ODBC 표준 |
SELECT WEEKDAY(NOW()) | 0 |
|
반응형
'IT 관련 > Database' 카테고리의 다른 글
[MySQL]트랜잭션(transaction) 처리#1 (0) | 2017.12.28 |
---|---|
[MySQL] 트랜잭션(transaction) 처리 (0) | 2017.12.28 |
Primary Key vs Unique Index (0) | 2017.12.27 |
[MySQL] CONNECT Storage Engine Oracle연동 (2) | 2017.12.26 |
[MySQL] csv 파일을 직접 테이블로 Import (0) | 2017.12.25 |
[Data 모델링] 엔티티(Entity), 애트리뷰(Attribute) (0) | 2017.12.18 |
[MySQL] last_insert_id() 사용시 주의 (8) | 2017.12.17 |
NULL 데이터에 대한 이해 (0) | 2017.12.17 |
댓글