본문으로 건너뛰기
최종 수정: 에

MICROSECONDS_DIFF

설명​

MICROSECONDS_DIFF 함수는 두 datetime 값 간의 차이를 마이크로초 단위로 계산합니다. 결과는 종료 시간과 시작 시간 사이의 간격을 마이크로초 단위의 정수로 나타낸 값입니다. DATETIME과 TIMESTAMP_NS를 지원하며, 서로 다른 타입의 인수를 함께 사용할 수도 있습니다.

구문​

MICROSECONDS_DIFF(`<date_or_time_expr1>`, `<date_or_time_expr2>`)

매개변수​

매개변수설명
<date_or_time_expr1>DATETIME 또는 TIMESTAMP_NS 타입의 종료 시간입니다. 지원하는 형식은 datetime 변환과 timestamp_ns 변환을 참조하세요.
<date_or_time_expr2>DATETIME, TIMESTAMP_NS 타입 또는 유효한 datetime 문자열로 지정하는 시작 시간입니다.

반환 값​

BIGINT 타입의 값을 반환하며, 두 시간 간의 차이를 마이크로초 단위로 나타냅니다.

  • <date_or_time_expr1>이 <date_or_time_expr2>보다 크면 양수를 반환합니다.
  • <date_or_time_expr1>이 <date_or_time_expr2>보다 작으면 음수를 반환합니다.
  • 두 시간이 마이크로초 부분까지 동일하면 0을 반환합니다.
  • 마이크로초 단위를 채우지 못하는 나머지 나노초는 영을 향해 절삭합니다. 정확한 나노초 차이를 구하려면 NANOSECONDS_DIFF를 사용하세요.
  • 매개변수 중 하나라도 NULL이면 NULL을 반환합니다.

예제​

-- Calculate the microsecond difference between two datetime values
SELECT MICROSECONDS_DIFF('2020-12-25 21:00:00.623000', '2020-12-25 21:00:00.123000');

+------------------------------------------------------------------------------+
| MICROSECONDS_DIFF('2020-12-25 21:00:00.623000','2020-12-25 21:00:00.123000') |
+------------------------------------------------------------------------------+
| 500000 |
+------------------------------------------------------------------------------+

--If the end time is earlier than the start time, a negative number is returned.
SELECT MICROSECONDS_DIFF('2023-10-01 12:00:00.500000', '2023-10-01 12:00:00.800000');
+-------------------------------------------------------------------------------+
| MICROSECONDS_DIFF('2023-10-01 12:00:00.500000', '2023-10-01 12:00:00.800000') |
+-------------------------------------------------------------------------------+
| -300000 |
+-------------------------------------------------------------------------------+

-- TIMESTAMP_NS values can be compared at nanosecond precision; incomplete microseconds are truncated
SELECT MICROSECONDS_DIFF(
CAST('2025-01-02 03:04:05.123457788' AS TIMESTAMP_NS),
CAST('2025-01-02 03:04:05.123456789' AS TIMESTAMP_NS)
);
+----------------------------------------------------------------------------------------------------+
| MICROSECONDS_DIFF(CAST('2025-01-02 03:04:05.123457788' AS TIMESTAMP_NS), CAST('2025-01-02 03:04:05.123456789' AS TIMESTAMP_NS)) |
+----------------------------------------------------------------------------------------------------+
| 0 |
+----------------------------------------------------------------------------------------------------+

-- Input type is date, time part defaults to 00:00:00.000000
SELECT MICROSECONDS_DIFF('2023-10-01 12:00:00.500000', '2023-10-01');
+---------------------------------------------------------------+
| MICROSECONDS_DIFF('2023-10-01 12:00:00.500000', '2023-10-01') |
+---------------------------------------------------------------+
| 43200500000 |
+---------------------------------------------------------------+

-- Any parameter is NULL, returns NULL
SELECT MICROSECONDS_DIFF('2023-01-01 00:00:00', NULL), MICROSECONDS_DIFF(NULL, '2023-01-01 00:00:00');
+------------------------------------------------+------------------------------------------------+
| MICROSECONDS_DIFF('2023-01-01 00:00:00', NULL) | MICROSECONDS_DIFF(NULL, '2023-01-01 00:00:00') |
+------------------------------------------------+------------------------------------------------+
| NULL | NULL |
+------------------------------------------------+------------------------------------------------+

--- datetime is same,return 0
SELECT MICROSECONDS_DIFF('2025-08-11 15:30:00.123456', '2025-08-11 15:30:00.123456');
+-------------------------------------------------------------------------------+
| MICROSECONDS_DIFF('2025-08-11 15:30:00.123456', '2025-08-11 15:30:00.123456') |
+-------------------------------------------------------------------------------+
| 0 |
+-------------------------------------------------------------------------------+