인프런 커뮤니티 질문&답변

edu1님의 프로필 이미지
edu1

작성한 질문수

Prisma로 알아보는 postgreSQL와 mongoDB

prisma timezone에 관한 질문이 있습니다.

작성

·

2.8K

·

수정됨

0

현재 공식 레퍼런스를 보며 prisma, next를 사용해서 게시판을 만드는 프로젝트 작업을 성공적으로 끝냈지만 한가지 문제가 있었습니다. prisma의 now()가 timezone UTC를 베이스로 작동하고 있는데 이걸 설정하는 방법을 prisma에서 공식적으로 지원하지 않는다고 검색을 통해 알게되었습니다.

아직 강의 내용을 수강하지는 않았기에 강의내용에서 timezone 관련 이슈를 다루는지는 모르겠지만 그 파트를 직접 찾기에는 오래 걸리는터라.... 먼저 질문부터 남겨봅니다.

답변 1

0

yongsoocho님의 프로필 이미지
yongsoocho
지식공유자

안녕하세요 질문 남겨주셔서 감사합니다 :)

제가 질문 이해를 못했는데요. timezone을 어디로 맞출지를 궁금해 하시는 것으로 이해했습니다!

TZ(TimeZone)은 따로 orm 에서 생성하는 것이 아니라 다음과 같이 .env 파일에서 환경변수로
맞추실 수 있습니다. 밑에 코드는 예시입니다.

TZ = 'Asia/Seoul'
TZ = 'Europe/Amsterdam'
... 등등 더 많은 TZ 이 있습니다. '대륙/도시' 형태입니다.

가끔씩은 TimeZone을 상황에 맞게 설정해야할 때도 있습니다.

예를 들면 서울에서 글을 남긴사람이 있고 미국에서 글을 남긴사람이 있는데 서로 위치에 맞게 작성일을 남겨줘야겠죠?

미국에서 글을 썼는데 작성일이 다음날로 되어있다면 이상할 수도 있으니까요. 그땐 default 가 아니라 직접 만들어 주시면 됩니다.

new Date().toLocaleString('ko-KR', {
  timeZone: 'Asia/Seoul'
});

new Date().toLocaleString('en-US', {
  timeZone: 'Europe/London'
});
edu1님의 프로필 이미지
edu1
질문자

env 파일로 글로벌 타임존을 설정할 수 가 있고 함수로 개별적으로도 설정할 수 도 있었네요. 답변 감사합니다. 검색했을땐 미들웨어로 복잡하게 해야 한다고 하길래 다른방법은 없을까 했는데 시간이되면 prisma orm도 깊게 공부해봐야겠네요!

edu1님의 프로필 이미지
edu1
질문자

.env 파일에서 TZ = 'Asia/Seoul'만 적용하면 timezon이 해당시간으로 설정되나요? schema.prisma에서 환경변수를 사용하기위해 따로 무언가를 더 설정해야하는것이 있을까요??

한번 적용해보았는데 mysql DB에 입력되는값은 그대로네요.

yongsoocho님의 프로필 이미지
yongsoocho
지식공유자

죄송합니다. 제가 질문에 엉뚱하게 답변을 했네요 ㅠㅠ

prisma 스키마에 있는 @default(now())은 질문자님의 말씀처럼 타임존 설정을 지원하지 않습니다..

따로 넣으셔야합니다.

edu1님의 프로필 이미지
edu1
질문자

스키마에서 타임존 설정을 따로넣는 방법에 대한것을 강의에서 다루고 있나요?? 없다면 구글링해서 해보겠습니다.

edu1님의 프로필 이미지
edu1
질문자

model Post {
  id        Int       @id @default(autoincrement())
  author    String
  title     String
  contents  String    @db.LongText
  createdAt DateTime  @default(dbgenerated("NOW()")) @db.DateTime
  updatedAt DateTime  @default(dbgenerated("NOW() ON UPDATE NOW()")) @db.DateTime
  user      User      @relation("user:post", fields: [author], references: [username], onDelete: Cascade)
  comments  Comment[] @relation("post:comment")
}

현재 mysql 기준으로 schema.prisma에서 이러한 방법으로 해결하긴했습니다.

yongsoocho님의 프로필 이미지
yongsoocho
지식공유자

그러한 내용은 따로 다루지 않았습니다. 죄송합니다.

edu1님의 프로필 이미지
edu1

작성한 질문수

질문하기