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

타임스탬프 값에 마이크로초를 추가하면 MySQL은 어떤 값을 반환할까?

UNIX_TIMESTAMP() 함수를 사용하면 타임스탬프(timestamp) 값을 초 단위의 숫자로 손쉽게 변환할 수 있습니다. 그런데 여기서 중요한 점은, 타임스탬프 값에 마이크로초(microseconds)를 추가하더라도 MySQL은 이를 무시한다는 것입니다. 그 이유는 UNIX_TIMESTAMP()가 반환하는 값이 10자리 숫자로 구성되어 있어, 마이크로초 단위까지 표현할 수 없기 때문입니다.

예제

먼저 일반적인 타임스탬프 값을 변환해 보겠습니다.

mysql> SELECT UNIX_TIMESTAMP('2017-10-22 04:05:36') AS 'Total Number of Seconds';
+-------------------------+
| Total Number of Seconds |
+-------------------------+
| 1508625336              |
+-------------------------+
1 row in set (0.00 sec)

이번에는 같은 타임스탬프 값 뒤에 6자리 마이크로초(.200000)를 추가하여 다시 변환해 보겠습니다.

mysql> SELECT UNIX_TIMESTAMP('2017-10-22 04:05:36.200000') AS 'Total Number of Seconds';
+-------------------------+
| Total Number of Seconds |
+-------------------------+
| 1508625336              |
+-------------------------+
1 row in set (0.00 sec)

위 두 쿼리의 실행 결과를 비교해 보면 알 수 있듯이, 타임스탬프 값에 6자리 마이크로초를 추가했음에도 불구하고 반환되는 초 단위 값은 1508625336으로 완전히 동일합니다. 즉, UNIX_TIMESTAMP() 함수는 정수(초) 단위까지만 처리하기 때문에 마이크로초 정보는 결과에 반영되지 않습니다.

정리

  • UNIX_TIMESTAMP()는 타임스탬프를 1970-01-01 00:00:00 UTC 이후 경과한 초 단위 정수로 변환합니다.
  • 반환값이 10자리 숫자이므로, 인수에 포함된 마이크로초는 무시됩니다.
  • 따라서 마이크로초 유무와 관계없이 동일한 초(second) 기준 시점이라면 항상 같은 값이 반환됩니다.