인덱스 용량을 구하되, 해당 인덱스에 특정 컬럼이 포함된 인덱스만 추출하여 인덱스 용량을 계산함

 

SELECT 
    B.TABLE_NAME
    , A.SEGMENT_NAME
    , ROUND(SUM(BYTES)/1024/1024) "SIZE_MB"
    , A.SEGMENT_TYPE
FROM USER_SEGMENTS A, USER_INDEXES B
WHERE A.SEGMENT_NAME = B.INDEX_NAME
AND A.SEGMENT_TYPE IN ('INDEX','INDEX PARTITION')
AND B.TABLE_NAME IN ([테이블명])
AND B.INDEX_NAME IN (
                    SELECT INDEX_NAME 
                    FROM USER_IND_COLUMNS
                    WHERE COLUMN_NAME = [컬럼명]
                    AND TABLE_NAME IN ([테이블명])

                   )
GROUP BY B.TABLE_NAME, A.SEGMENT_NAME, A.SEGMENT_TYPE
;

 

SELECT 문법에서 DBMS에 따라 WHERE에 정규식을 사용하여 데이터를 조회할 수 있다.

 

오라클의 경우 REGEXP_LIKE 함수를 MySQL의 경우 REGEXP 함수를 사용한다.

 

 

ORACLE 10G

SELECT * FROM [테이블명] WHERE REGEXP_LIKE([컬럼명], [정규식]);
SELECT * FROM [테이블명] WHERE NOT REGEXP_LIKE([컬럼명], [정규식]);

 

ORACLE 11G에서는 REGEXP_COUNT 함수가 추가 되었다.

SELECT * FROM [테이블명] WHERE REGEXP_COUNT([컬러명], [정규식] ) > 0;

 

사용 예시

SELECT *
FROM MEMBER
WHERE REGEXP_LIKE(NAME, '[a-z] | [A-Z]');

SELECT *
FROM MEMBER
WHERE NOT REGEXP_LIKE(NAME, '[a-z] | [A-Z]');

SELECT *
FROM MEMBER
WHERE REGEXP_COUNT(NAME, '[a-z] | [A-Z]') > 0;

SELECT *
FROM MEMBER
WHERE REGEXP_COUNT(NAME, '[a-z] | [A-Z]') < 0;

 


MySQL

SELECT * FROM [테이블명] WHERE [컬럼명] REGEXP([정규식] );
SELECT * FROM [테이블명] WHERE [컬럼명] NOT REGEXP([정규식] );

 

사용 예시

SELECT *
FROM MEMBER
WHERE NAME REGEXP('[a-z] | [A-Z]');

SELECT *
FROM MEMBER
WHERE NAME NOT REGEXP('[a-z] | [A-Z]');

 

'데이터베이스' 카테고리의 다른 글

[SQL] 문자열 합치기  (0) 2021.01.15
[SQL]Oracle 인덱스 용량 계산  (0) 2021.01.14
[SQL] 기본 SQL  (0) 2021.01.11
[SQL] 매주 특정 요일의 날짜를 SQL로 계산하기  (0) 2020.12.23
[SQL Template] paging, grid template  (0) 2020.02.04

HTML5의 Form 속성 중 formaction 속성을 사용하게 되면 다중의 submit에 각각 다른 액션을 지정할 수 있다.

 

<form>
      <button type="submit" formmethod="GET"  formaction="/test"  value="테스트페이지로"/>
      <button type="submit" formmethod="POST" formaction="/check" value="체크페이지로"/>
</form>

 

브라우저별 지원 여부

크롬 익스플로러 파이어폭스 사파리 오페라
9.0 10 4.0 5.1 15.0

 

formaction에 입력하게되는 URL은 상대 경로(/test) or 절대 경로(http://www.[사이트명]. com/test) 모두 입력이 가능하다.

 

'프로그래밍 > HTML5' 카테고리의 다른 글

[HTML5] Audio & Video  (2) 2012.08.28
[HTML5] canvas  (0) 2012.08.27

+테이터베이스 

    - 데이터베이스 목록보기

    show databases;

 

    - 테이터베이스 생성

    create database [테이터베이스명];

 

    - 테이터베이스 삭제

    drop database [테이터베이스명];

 

    - 데이터베이스 사용하기

    use [테이터베이스명];



+테이블

    - 테이블 생성

    create table [테이블명]{

        [컬럼명] [테이터타입] [제약조건]

    };

 

    - 테이블 삭제

    drop table [테이블명];

 

    - 테이블 조회 

    select [컬럼명]

    from [테이블명];

 

    - 데이터 추가

    insert into [테이블명] ( [컬럼명] )

    values ( [데이터] );

 

    - 데이터 삭제

    delte from [테이블명] 

    where [조건];

 

    - 데이터 수정

    update [테이블명]

    set [컬럼명] = [데이터]

    where [조건];

Java 8 이상부터는 데이터 포맷 형식에서 연도를 표기하는 yyyy외에도 uuuu가 추가되어있다.

 

먼저 예시 코드와 출력물은 아래와 같다.

 

    private void checkYear(){
		LocalDateTime localDateTime = LocalDateTime.of(0, 12, 30, 0, 0);
		System.out.println("기원전에서 서기 날짜 출력");
		for ( int i = 0 ; i < 5 ; i++ ){
			String yyResult = localDateTime.format(DateTimeFormatter.ofPattern("G yyyy-MM-dd"));
			String uuResult = localDateTime.format(DateTimeFormatter.ofPattern("G uuuu-MM-dd"));
			System.out.println(yyResult + "\t" + uuResult);
			localDateTime = localDateTime.plusDays(1);
		}
		System.out.println("\n기원전, 서기 각각 100년에 대한 포맷 출력");
		LocalDateTime localDateTime2 = LocalDateTime.of(-100, 12, 30, 0, 0);
		LocalDateTime localDateTime3 = LocalDateTime.of(100, 12, 30, 0, 0);
		String yyResult2 = localDateTime2.format(DateTimeFormatter.ofPattern("G yyyy-MM-dd"));
		String uuResult2 = localDateTime2.format(DateTimeFormatter.ofPattern("G uuuu-MM-dd"));
		System.out.println(yyResult2 + "\t" + uuResult2);
		
		String yyResult3 = localDateTime3.format(DateTimeFormatter.ofPattern("G yyyy-MM-dd"));
		String uuResult3 = localDateTime3.format(DateTimeFormatter.ofPattern("G uuuu-MM-dd"));
		System.out.println(yyResult3 + "\t" + uuResult3);
	}
//	기원전에서 서기 날짜 출력
//	기원전 0001-12-30	기원전 0000-12-30
//	기원전 0001-12-31	기원전 0000-12-31
//	서기 0001-01-01	서기 0001-01-01
//	서기 0001-01-02	서기 0001-01-02
//	서기 0001-01-03	서기 0001-01-03
//
//	기원전, 서기 각각 100년에 대한 포맷 출력
//	기원전 0101-12-30	기원전 -0100-12-30
//	서기 0100-12-30	서기 0100-12-30

 

첫 번째 출력 결과로 확인할 수 있는 내용으로는 yyyy의 표기인 경우, 서기 1년 1월 1일 전일 은 기원전 0년 12월 31일이 아니라, 기원전 1년 12월 31일이 된다.

 

두 번째 출력 결과로 확인할 수 있는 내용으로는 기원전 100년을 표기하고 싶었지만, yyyy에서는 음수 처리와 함께 101년으로 변경되었다.

 

실제로 연도를 가지고 계산을 하거나 표기를 할 때는 uuuu 패턴을 사용하는 것이 안전할 수 있다고 볼 수 있다.

본 내용은 Excel 2019 버전 기준으로 작성되었습니다.

 

특정 열에는 목차가 작성되고, 연속된 열에서 목차의 내용이 들어가는 경우에

 

목차의 내용에 따른 들여 쓰기 여백을 계산하는 매크로 프로그램

 

주의사항 1 : 현재 활성화된 시트에서 동작하며, 목차와 목차 내용은 연달에 있어야 합니다.

주의사항 2 : 목차는 점(.)으로 입력되어 있어야 합니다.

 

A B C D
  1 제목  
  1.1     부제목  
  1.1.1         내용  
  2 제목  
  2.1     부제목  

 

 

매크로 프로그램 실행방법

0. 파일 > 옵션 > 리본 사용자 지정 > 게발도구(선택) > 확인 

1. 개발도구 > 매크로(선택)

2. 매크로 이름에 Indent 입력 후, 만들기 선택

3. 아래 내용 복사, 붙여 넣기

4. 엑셀 > 개발도구 > 매크로 > Indent > 실행(선택)

 

Public Sub Indent()

    Dim cellRange As Range

    Dim count, duplicationCheck

    Dim init, spaceCount

    

    Dim inputCell, outoutCell, valueCell

    

    '입력된 컬럼 정보

    '컬럼은 순차적으로 붙여서 사용되어야 합니다. ex) A,B or B,C or C,D

    inputCell = "B"

    outputCell = "C"

 

    init = 4 '공백 기준은 4칸

    

    For Each cellRange In ActiveSheet.UsedRange.Columns(1).Cells

        

        count = Len(cellRange.Value) - Len(WorksheetFunction.Substitute(cellRange.Value, ".", ""))

        duplicationCheck = Len(Trim(cellRange.Offset(0, 1).Text)) - Len(WorksheetFunction.Substitute(cellRange.Offset(0, 1).Text, " ", 1))

        

        If (count > 0 And duplicationCheck >= 0) Then

            spaceCount = init * count

            cellRange.Offset(0, 1).NumberFormat = "@"

            cellRange.Offset(0, 1).Value = Space(spaceCount) + cellRange.Offset(0, 1).Text

        End If

    Next cellRange

    

End Sub

 

 

현재 날짜와 시간을 기준으로 특정한 날짜와 시간을 입력하여 함수를 실행하는 스크립트

 

 

function timerFunc(func, dateTime){
	//ex) timerFunc(function(){console.log('test');},'20210108144740');
    //시간은 24시간을 기준으로 입력하여야 합니다.
    var year = Number(dateTime.substring(0,4));
    var month = Number(dateTime.substring(4,6));
    var day = Number(dateTime.substring(6,8));
    var time = Number(dateTime.substring(8,10));
    var minute = Number(dateTime.substring(10,12));
    var second = Number(dateTime.substring(12,14));
     
    var oprDate = new Date(year, month-1, day, time, minute, second); //동작을 원하는 시간의 Date 객체를 생성합니다.
    var nowDate = new Date();                                         //현재 날짜와 시간을 확인
     
    var timer = oprDate.getTime() - nowDate.getTime(); //동작시간의 밀리세컨과 현재시간의 밀리세컨의 차이를 계산합니다.
    if(timer < 0){ //타이머가 0보다 작으면 함수를 종료합니다.
       return;
    }else{
       setTimeout(func, timer);
    }
}

 

메뉴코드 상위메뉴코드 메뉴명
1 0 MainPage
2 1 Second Menu 1
4 2 Third Menu 1
5 2 Third Menu 2
3 1 Second Menu 2


상단의 테이블 정보를 트리형식으로 표현하게 되면 아래와 같은 구조를 가지고 있음을 알 수 있다.

  • MainPage
    • Second Menu1
      • Third Menu 1
      • Third Menu 2
    • Second Menu2

 

최상위 메뉴인 MainPage를 기준으로 하위 페이지 내용들을 출력하기 위하여

1. HashMap을 사용하여 메뉴코드가 중복되지 않는 점을 이용

2. Parent-Child 관계를 확인 후, ChildrenList에 페이지 정보를 추가

3. 메뉴 정보 출력

위 순서대로 구성되어 있다.

 

public class MenuVO {

	private int menuSeq;
	private int menuUpSeq;
	private String menuNm;
	private int menuSno;
	
	private List<MenuVO> childrenList;

	
	public MenuVO(){
		super();
	}
	
	public MenuVO(MenuVO menuVO){
		this.menuSeq = menuVO.getMenuSeq();
		this.menuUpSeq = menuVO.getMenuUpSeq();
		this.menuNm = menuVO.getMenuNm();
		this.childrenList = new ArrayList<MenuVO>(); 
	}
	
	public int getMenuSeq() {
		return menuSeq;
	}

	public void setMenuSeq(int menuSeq) {
		this.menuSeq = menuSeq;
	}

	public int getMenuUpSeq() {
		return menuUpSeq;
	}

	public void setMenuUpSeq(int menuUpSeq) {
		this.menuUpSeq = menuUpSeq;
	}

	public String getMenuNm() {
		return menuNm;
	}

	public void setMenuNm(String menuNm) {
		this.menuNm = menuNm;
	}

	public int getMenuSno() {
		return menuSno;
	}

	public void setMenuSno(int menuSno) {
		this.menuSno = menuSno;
	}

	public List<MenuVO> getChildrenList() {
		return childrenList;
	}

	public void setChildrenList(List<MenuVO> childrenList) {
		this.childrenList = childrenList;
	}
	
	public void addChildren(MenuVO children){
		this.childrenList.add(children);
	}

	@Override
	public String toString() {
		return "MenuVO [menuSeq=" + menuSeq + ", menuUpSeq=" + menuUpSeq + ", menuNm=" + menuNm + ", menuSno=" + menuSno
				+ ", childrenList=" + childrenList + "]";
	}
}

 

 

public static void main(String[] args) {
	
	List<MenuVO> menuList = new ArrayList<MenuVO>();
	
	MenuVO topMenu = new MenuVO();
	topMenu.setMenuSeq(1);
	topMenu.setMenuUpSeq(0);
	topMenu.setMenuNm("Main Page");
	menuList.add(topMenu);

	MenuVO secondMenu1 = new MenuVO();
	secondMenu1.setMenuSeq(2);
	secondMenu1.setMenuUpSeq(1);
	secondMenu1.setMenuNm("secondMenu1 Page");
	menuList.add(secondMenu1);
	
	MenuVO thirdMenu1 = new MenuVO();
	thirdMenu1.setMenuSeq(4);
	thirdMenu1.setMenuUpSeq(2);
	thirdMenu1.setMenuNm("thirdMenu1 Page");
	menuList.add(thirdMenu1);

	MenuVO thirdMenu2 = new MenuVO();
	thirdMenu2.setMenuSeq(5);
	thirdMenu2.setMenuUpSeq(2);
	thirdMenu2.setMenuNm("thirdMenu2 Page");
	menuList.add(thirdMenu2);
	
	MenuVO secondMenu2 = new MenuVO();
	secondMenu2.setMenuSeq(3);
	secondMenu2.setMenuUpSeq(1);
	secondMenu2.setMenuNm("secondMenu2 Page");
	menuList.add(secondMenu2);
	
	
	
	
	HashMap<Integer, MenuVO> hm = new HashMap<Integer, MenuVO>();
	
	
    for(MenuVO p:menuList){
    	MenuVO mmdChild ;
        if(hm.containsKey(p.getMenuSeq())){
            mmdChild = hm.get(p.getMenuSeq());
        }
        else{
            mmdChild = new MenuVO(p);
            hm.put(p.getMenuSeq(),mmdChild);
        }           

        MenuVO mmdParent ;
        if(hm.containsKey(p.getMenuUpSeq())){
            mmdParent = hm.get(p.getMenuUpSeq());
        }
        else{
            mmdParent = new MenuVO(p);
            hm.put(p.getMenuUpSeq(),mmdParent);
        }
        mmdParent.setMenuSeq(p.getMenuUpSeq());
        mmdParent.addChildren(mmdChild);
        
        printHashMap(hm);
    }
  
    MenuVO menuVO = hm.get(1);
    printMenu(menuVO);
    	
}


public static void printMenu(MenuVO menuVO){
	
	System.out.println("#####         START          #####");
	System.out.println(menuVO.getMenuSeq() + " : " + menuVO.getMenuUpSeq() + " : " + menuVO.getMenuNm());
	
	List<MenuVO> tmp = menuVO.getChildrenList();
	
	if ( !tmp.isEmpty() ){
		for (MenuVO childeMenuVO : tmp) {
			printMenu(childeMenuVO);
		}
	}
	 System.out.println("@@@@@          END           @@@@@\n");
}

public static void printHashMap(HashMap<Integer, MenuVO> hm){
	Set<Integer> keySet = hm.keySet();
    System.out.println("$$$$$         START          $$$$$");
    for (Integer integer : keySet) {
		MenuVO menuVO = hm.get(integer);
		System.out.println(menuVO.toString());
	}
    System.out.println("$$$$$          END           $$$$$\n");
}

/*
결과
$$$$$         START          $$$$$
MenuVO [menuSeq=0, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[MenuVO [menuSeq=1, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[]]]]
MenuVO [menuSeq=1, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[]]
$$$$$          END           $$$$$

$$$$$         START          $$$$$
MenuVO [menuSeq=0, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[MenuVO [menuSeq=1, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[MenuVO [menuSeq=2, menuUpSeq=1, menuNm=secondMenu1 Page, menuSno=0, childrenList=[]]]]]]
MenuVO [menuSeq=1, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[MenuVO [menuSeq=2, menuUpSeq=1, menuNm=secondMenu1 Page, menuSno=0, childrenList=[]]]]
MenuVO [menuSeq=2, menuUpSeq=1, menuNm=secondMenu1 Page, menuSno=0, childrenList=[]]
$$$$$          END           $$$$$

$$$$$         START          $$$$$
MenuVO [menuSeq=0, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[MenuVO [menuSeq=1, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[MenuVO [menuSeq=2, menuUpSeq=1, menuNm=secondMenu1 Page, menuSno=0, childrenList=[MenuVO [menuSeq=4, menuUpSeq=2, menuNm=thirdMenu1 Page, menuSno=0, childrenList=[]]]]]]]]
MenuVO [menuSeq=1, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[MenuVO [menuSeq=2, menuUpSeq=1, menuNm=secondMenu1 Page, menuSno=0, childrenList=[MenuVO [menuSeq=4, menuUpSeq=2, menuNm=thirdMenu1 Page, menuSno=0, childrenList=[]]]]]]
MenuVO [menuSeq=2, menuUpSeq=1, menuNm=secondMenu1 Page, menuSno=0, childrenList=[MenuVO [menuSeq=4, menuUpSeq=2, menuNm=thirdMenu1 Page, menuSno=0, childrenList=[]]]]
MenuVO [menuSeq=4, menuUpSeq=2, menuNm=thirdMenu1 Page, menuSno=0, childrenList=[]]
$$$$$          END           $$$$$

$$$$$         START          $$$$$
MenuVO [menuSeq=0, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[MenuVO [menuSeq=1, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[MenuVO [menuSeq=2, menuUpSeq=1, menuNm=secondMenu1 Page, menuSno=0, childrenList=[MenuVO [menuSeq=4, menuUpSeq=2, menuNm=thirdMenu1 Page, menuSno=0, childrenList=[]], MenuVO [menuSeq=5, menuUpSeq=2, menuNm=thirdMenu2 Page, menuSno=0, childrenList=[]]]]]]]]
MenuVO [menuSeq=1, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[MenuVO [menuSeq=2, menuUpSeq=1, menuNm=secondMenu1 Page, menuSno=0, childrenList=[MenuVO [menuSeq=4, menuUpSeq=2, menuNm=thirdMenu1 Page, menuSno=0, childrenList=[]], MenuVO [menuSeq=5, menuUpSeq=2, menuNm=thirdMenu2 Page, menuSno=0, childrenList=[]]]]]]
MenuVO [menuSeq=2, menuUpSeq=1, menuNm=secondMenu1 Page, menuSno=0, childrenList=[MenuVO [menuSeq=4, menuUpSeq=2, menuNm=thirdMenu1 Page, menuSno=0, childrenList=[]], MenuVO [menuSeq=5, menuUpSeq=2, menuNm=thirdMenu2 Page, menuSno=0, childrenList=[]]]]
MenuVO [menuSeq=4, menuUpSeq=2, menuNm=thirdMenu1 Page, menuSno=0, childrenList=[]]
MenuVO [menuSeq=5, menuUpSeq=2, menuNm=thirdMenu2 Page, menuSno=0, childrenList=[]]
$$$$$          END           $$$$$

$$$$$         START          $$$$$
MenuVO [menuSeq=0, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[MenuVO [menuSeq=1, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[MenuVO [menuSeq=2, menuUpSeq=1, menuNm=secondMenu1 Page, menuSno=0, childrenList=[MenuVO [menuSeq=4, menuUpSeq=2, menuNm=thirdMenu1 Page, menuSno=0, childrenList=[]], MenuVO [menuSeq=5, menuUpSeq=2, menuNm=thirdMenu2 Page, menuSno=0, childrenList=[]]]], MenuVO [menuSeq=3, menuUpSeq=1, menuNm=secondMenu2 Page, menuSno=0, childrenList=[]]]]]]
MenuVO [menuSeq=1, menuUpSeq=0, menuNm=Main Page, menuSno=0, childrenList=[MenuVO [menuSeq=2, menuUpSeq=1, menuNm=secondMenu1 Page, menuSno=0, childrenList=[MenuVO [menuSeq=4, menuUpSeq=2, menuNm=thirdMenu1 Page, menuSno=0, childrenList=[]], MenuVO [menuSeq=5, menuUpSeq=2, menuNm=thirdMenu2 Page, menuSno=0, childrenList=[]]]], MenuVO [menuSeq=3, menuUpSeq=1, menuNm=secondMenu2 Page, menuSno=0, childrenList=[]]]]
MenuVO [menuSeq=2, menuUpSeq=1, menuNm=secondMenu1 Page, menuSno=0, childrenList=[MenuVO [menuSeq=4, menuUpSeq=2, menuNm=thirdMenu1 Page, menuSno=0, childrenList=[]], MenuVO [menuSeq=5, menuUpSeq=2, menuNm=thirdMenu2 Page, menuSno=0, childrenList=[]]]]
MenuVO [menuSeq=3, menuUpSeq=1, menuNm=secondMenu2 Page, menuSno=0, childrenList=[]]
MenuVO [menuSeq=4, menuUpSeq=2, menuNm=thirdMenu1 Page, menuSno=0, childrenList=[]]
MenuVO [menuSeq=5, menuUpSeq=2, menuNm=thirdMenu2 Page, menuSno=0, childrenList=[]]
$$$$$          END           $$$$$

#####         START          #####
1 : 0 : Main Page
#####         START          #####
2 : 1 : secondMenu1 Page
#####         START          #####
4 : 2 : thirdMenu1 Page
@@@@@          END           @@@@@

#####         START          #####
5 : 2 : thirdMenu2 Page
@@@@@          END           @@@@@

@@@@@          END           @@@@@

#####         START          #####
3 : 1 : secondMenu2 Page
@@@@@          END           @@@@@

@@@@@          END           @@@@@
*/

 

 

 

public String maskingPhone(String phoneStr) {
	phoneStr = phoneStr.replaceAll("-", "");
	String result = "";
	int strLength = phoneStr.length();
	result += phoneStr.substring(0,3);
	result += strLength == 10 ? "-***-" : "-****-";
	result += phoneStr.substring((strLength - 4 ),(strLength));
	return result;
}
//maskingPhone("010-111-1111");
//maskingPhone("010-1234-5678");

 

 

public String maskingName(String nameStr) {
	String result = "";
	int strLength = nameStr.length();
	
	result += nameStr.substring(0,1);
	
	if ( strLength == 2 ){
		result += "*";
	}else{
		String mask = "";
		for (int i = 0; i < ( strLength -2 ); i++) {
			mask += "*";
		}
		result += mask;
		result += nameStr.subSequence((strLength-1), strLength);
	}
	return result;
}
//maskingName("김김");
//maskingName("박박박");

Oracle의 경우, next_day()함수를 사용하면 쉽게 구할 수 있다.

--1:일요일, 2:월요일, 3:화요일, 4:수요일, 5:목요일, 6:금요일, 7:토요일
SELECT
NEXT_DAY(SYSDATE,1)
FROM
DUAL;

 

Mysql의 경우, NEXT_DAY()함수가 존재하지 않기 때문에 별도의 쿼리를 작성하여야 한다.

--0: 일요일, 1: 월요일, 2: 화요일, 3:수요일, 4:목요일, 5:금요일, 6:토요일
SELECT 
CASE
	WHEN T1.choiceDay > date_format(sysdate(),'%w') THEN ADDDATE(SYSDATE(),( T1.choiceDay - date_format(sysdate(),'%w')))
	ELSE ADDDATE( SYSDATE(), (7-date_format(sysdate(),'%w')+T1.choiceDay))
END as resultDay
FROM
( SELECT 6 AS choiceDay FROM DUAL )T1
;

 

오라클은 일요일이 1에서 시작하고, Mysql은 일요일이 0에서 시작하기 때문에 이 부분에 대해서는 유의해야 한다.

'데이터베이스' 카테고리의 다른 글

[SQL] 정규식을 사용한 Select 조회  (0) 2021.01.13
[SQL] 기본 SQL  (0) 2021.01.11
[SQL Template] paging, grid template  (0) 2020.02.04
[SQL] INSERT VALUES((SELECT))  (0) 2016.06.03
MariaDB Connector  (0) 2014.11.17