DB

[MSSQL] DtaeTime 표현하기

JiHxxn 2024. 2. 18. 02:00

DB에 데이터를 저장할 때 특정 날짜를 저장하고 싶은 경우가 있다.

그런 경우 문자열 Type으로 저장해 관리하는 것보단 DateTime Type을 사용해 저장하는 걸 권장한다.

물론 당장에 검색할 땐 큰 문제는 없을지 모르지만 특정 날짜와 비교 혹은 값을 추가하려 할 때 상당히 피곤해지기 때문이다.


DateTime 이란?

DateTime은 날짜만 관리하는 Date과 시간만 관리하는 Time이 합쳐진 Type이다.

Type 관리 Data
Date 연/월/일
Time 시/분/초
DateTime 연/월/일/시/분/초

테이블 Setting 하기

새로운 테이블을 만들고, 사용한 열 이름, 데이터 타입(dateTime)을 정해준다.

Ctrl + S 를 눌러 테이블을 저장해 준 후 개체 탐색기에서 새로고침 버튼을 눌러주면 저장한 테이블을 확인할 수 있다.

만들어준 테이블을 오른쪽 마우스를 클릭하고 ‘상위 1000개 행 선택’을 눌러 테이블을 확인할 수 있다. (지금은 저장된 데이터가 아무것도 없는 상태이다)

DateTime을 표현해 주기 위해선 ‘문자열’을 변환해서 사용해 주어야 하는데, 이때 캐스팅을 도와 것이 ‘CAST’ 함수이다. 원하는 날짜를 문자열로 넣어준 후 AS DATATIME을 사용해 DateTiem 형식으로 캐스팅해 준다.

 

  • DateTime 사용을 사용할 땐 정해진 포맷이 있는데, 해당 부분 이미지가 예시이다.
  1. 첫 번째는 YYYY.MM.DD hh:mm:ss 포맷은 예시처럼 ‘1994.10.24 14:00’을 넣어주면 된다.
  2. 두 번째는 YYYY-MM-DD hh:mm:ss 포맷은 예시처럼 ‘1994-10-24 14:00’을 넣어주면 된다.

이때 날짜와 시간 사이 띄어쓰기는 꼭 넣어주어야 한다. 또한 시간 같은 경우 넣어주지 않으면 00으로 세팅된다.


테이블에 Data 저장해 보기

만들어준 테이블에서 오른쪽 마우스를 클릭해 테이블 스크립팅 → INSERT → 새 쿼리 편집기 창을 눌러 편집기 창을 열어준다.

  • 그럼 추가하는 기본 문법이 세팅되어 있다.
    • INSERT INTO에서 테이블 명을 넣어주고 VALUES에서 원하는 날짜 데이터를 넣어주면 된다.

 

INSERT INTO에는 이미 우리가 원하는 테이블이 세팅되어 있을 것이고, VALUES에 원하는 날짜 데이터를 넣어준다.

 

이때 현재 시간을 넣어주고 싶다면 CURREN_TIMESTAMP를 넣고 F5를 눌러 데이터에 저장해 준다. (현재 시간의 기준은 사용하고 있는 디바이스에서 사용되고 있는 시간이다)

 

예시에는 CAST를 넣지 않고 문자열 그대로 넣어주었는데, 상단에 time이라는 Type을 정해주었기 때문에 날짜를 표현하는 포맷만 잘 지켜준다면 문자열만 넣어도 데이터에 저장시켜 줄 수 있다.

만들어준 dateTimeTest 테이블에서 오른쪽 마우스 클릭 후 ‘상위 1000개의 행 선택’을 눌러 테이블에 저장된 값을 확인할 수 있다.


날짜 비교하기

  1. CTRL + N을 눌러 테스트할 새 쿼리를 만들어준다.
  2. dataTimeTest 테이블의 저장된 데이터들을 조건을 넣어 필터로 뽑아낼 수 있다.
  3. FROM은 가져오려는 테이블을 넣어주고, SELECT는 가져오려는 테이블의 Type을 필터 처리할 수 있는데, 지금은 *을 넣어 모든 Type을 가져오게 하였다.
  4. WHERE 문으로 조건을 넣어 데이터를 원하는 방식대로 필터 처리할 수 있는데, WHERE문은 if문이라 생각하면 편할 것이다. 예제에선 time이라는 열에서 1995년 10월 24일 보다 큰 데이터를 뽑아내라 했기 때문에 1994년 10월 24일 데이터는 필터 처리 되었다.

날짜 더하기

인풋 데이터  조건  결과 값
1994.10.24 1년을 더해라 1995-10-24 00:00:00
1994.10.24 5달을 더해라 1995-03-24 00:00:00
1994.10.24 15일을 더해라 1994-11-08 00:00:00
1994.10.24 1234567초를 더해라 1995-11-07 06:56:07

날짜와 날짜 사이 값 뽑아내기

 

인풋 데이터  조건 결과 값
1994.10.24, 현재 시간 Year 30
1994.10.24, 1995.10.23 Month 12
1994.10.24, 1994.10.25 Second 86400

 


특정 날짜 뽑아내기

인풋 데이터  조건 결과 값
1994.10.24, Year 1994
디바이스 현재 시간 Month 2
1994.10.24 Second 24

'DB' 카테고리의 다른 글

[MSSQL] JOIN  (0) 2024.03.02
[MSSQL] INSERT, DELETE, UPDATE  (0) 2024.03.02
[MSSQL] SUB QUERY  (0) 2024.03.02
[MSSQL] CREATE, DROP, ALTER  (0) 2024.03.02