Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

JavaScript 날짜 시간을 MySQL DATETIME 형식으로 변환하는 방법

JavaScript에서 생성한 날짜와 시간 데이터를 MySQL 데이터베이스에 저장하려면, MySQL이 인식하는 YYYY-MM-DD HH:MM:SS 형식으로 변환해야 합니다. 이때 가장 간단하게 활용할 수 있는 방법이 바로 자바스크립트의 toISOString() 함수입니다.

toISOString() 함수란?

toISOString()은 Date 객체를 ISO 8601 표준 문자열로 반환하는 메서드입니다. 반환되는 형식은 다음과 같습니다.

2018-11-23T11:14:38.000Z

MySQL의 DATETIME 형식은 밀리초와 T, Z 문자를 포함하지 않으므로, 이를 적절히 잘라내고 치환하는 과정이 필요합니다.

변환 예제

다음은 자바스크립트 코드로 현재 날짜와 시간을 MySQL DATETIME 형식으로 변환하여 화면에 출력하는 전체 예제입니다.

<!DOCTYPE html>
<html>
   <head>
      <title>Web Page Design</title>
      <script>
         document.writeln(new Date().toISOString().slice(0, 19).replace('T', ' '));
      </script>
   </head>
<body>
   <br>현재 날짜가 위에 표시됩니다...
</body>
</html>

코드 동작 원리

위 코드의 핵심 로직을 단계별로 살펴보면 다음과 같습니다.

1. new Date().toISOString() — 현재 시각을 ISO 8601 문자열로 변환합니다.
2. slice(0, 19) — 앞에서 19자리까지만 잘라내어 밀리초(.000)와 Z 문자를 제거합니다.
3. replace('T', ' ') — 날짜와 시간 사이의 구분자 T를 공백으로 바꿔 MySQL 형식을 완성합니다.

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

2018-11-23 11:14:38
현재 날짜가 위에 표시됩니다...

주의 사항: 시간대(Timezone)

toISOString()은 항상 UTC(협정 세계시) 기준으로 시간을 반환합니다. 따라서 한국(KST, UTC+9)처럼 UTC보다 빠른 시간대에서 사용할 경우, 결과값이 현지 시간보다 9시간 느리게 표시될 수 있습니다.

현지 시간 기준으로 변환이 필요하다면 아래와 같이 오프셋을 보정하는 방법을 사용할 수 있습니다.

const now = new Date();
const localTime = new Date(now.getTime() - now.getTimezoneOffset() * 60000);
const mysqlDatetime = localTime.toISOString().slice(0, 19).replace('T', ' ');
console.log(mysqlDatetime); // 예: 2018-11-23 20:14:38

이처럼 toISOString() 함수와 문자열 처리만으로도 JavaScript의 날짜 시간 값을 손쉽게 MySQL DATETIME 형식으로 변환할 수 있습니다.