[PostgreSQL] db에서 timpestamp타입 컬럼을 date 타입으로 삽입하고 싶은 경우

wheezy·2022년 7월 20일
0

SQL

목록 보기
1/2

Intro

등록/수정하는 쿼리 작성에서 타입으로 문제가 빈번히 발생했다.
각각 data type을 아래와 같이 설정해두었다.

  • postsql(db) : timestamp
  • dto : string
  • 원하는 insert/update 컬럼 형식 : date(YYYY-MM-DD)

Error

쿼리

xml : mybatis

INSERT INTO public."LOGIN_TABLE"
	"NAME",
	"ID",
	"PW",
	"LOGIN_DATE"
VALUES (
	#{name},
	#{id},
	#{pw},
	#{loginDate}
)

test data

swagger나 postman에서 테스트를 아래와 같이 작성하였다.

{
"name" : "han",
"id" : "test",
"pw" : "1234",
"loginDate" : "2022-07-20"
}

이렇게 하니 loginDate가 dto에서 string으로 정의되어 있으나 db에서는 timpestamp여서 오류가 발생하였다.

Solution

아래와 같이 TO_DATE( #{loginDate}, 'YYYY-MM-DD') 작성해 주면 오류가 해결되고 db에 time 값이 0으로 세팅된다.

ex

TO_DATE(text,format) // 2022-07-07 00:00:00.000

쿼리

xml : mybatis

INSERT INTO public."LOGIN_TABLE"
	"NAME",
	"ID",
	"PW",
	"LOGIN_DATE"
VALUES (
	#{name},
	#{id},
	#{pw},
	TO_DATE( #{loginDate}, 'YYYY-MM-DD')
)
profile
🧀 개발을 하면서 도움이 되었던 부분을 기록하는 공간입니다 🧀

0개의 댓글