날짜·시간 함수

날짜·시간 함수 (Functions for Working with Dates and Times)

날짜와 시간을 다루고 변환하며 계산하는 함수 모음이에요. 대부분의 함수는 선택적 타임존 인자를 받아요.

출처: 문서

본문

이 섹션의 대부분 함수는 선택적 타임존 인자(예: Europe/Amsterdam)를 받아요. 이 경우 로컬(기본) 타임존 대신 지정된 타임존이 사용돼요. 예:

SELECT
    toDateTime('2016-06-15 23:00:00') AS time,
    toDate(time) AS date_local,
    toDate(time, 'Asia/Yekaterinburg') AS date_yekat,
    toString(time, 'US/Samoa') AS time_samoa
┌────────────────time─┬─date_local─┬─date_yekat─┬─time_samoa──────────┐
│ 2016-06-15 23:00:00 │ 2016-06-15 │ 2016-06-16 │ 2016-06-15 09:00:00 │
└─────────────────────┴────────────┴────────────┴─────────────────────┘

SQL 표준 호환을 위해 NOW, CURRENT_TIMESTAMP, LOCALTIME, LOCALTIMESTAMP, TODAY, CURRENT_DATE 함수는 괄호 없이 사용할 수 있어요.

UTCTimestamp

쿼리 분석 시점의 현재 날짜와 시간을 반환해요. 이 함수는 상수 표현식이에요. now('UTC')와 같은 결과를 줘요. MySQL 지원을 위해 추가됐어요. now 사용이 더 선호돼요. 이 함수는 비결정적이에요.

구문 (Syntax)

UTCTimestamp()

별칭 (Aliases): UTC_timestamp

반환 값 (Returned value)

쿼리 분석 시점의 현재 날짜와 시간. DateTime

YYYYMMDDToDate

연월일 숫자를 담은 숫자를 Date로 변환해요. toYYYYMMDD()의 반대 함수예요. 입력이 유효한 Date 값을 인코딩하지 않으면 출력은 정의되지 않아요.

구문 (Syntax)

YYYYMMDDToDate(YYYYMMDD)

반환 값 (Returned value)

제공된 인자로 만든 Date 값. Date

YYYYMMDDToDate32

연월일 숫자를 담은 숫자를 Date32로 변환해요. toYYYYMMDD()의 반대 함수예요.

구문 (Syntax)

YYYYMMDDToDate32(YYYYMMDD)

반환 값 (Returned value)

제공된 인자로 만든 Date32 값. Date32

YYYYMMDDhhmmssToDateTime

연월일시분초 숫자를 담은 숫자를 DateTime으로 변환해요. toYYYYMMDDhhmmss()의 반대 함수예요.

구문 (Syntax)

YYYYMMDDhhmmssToDateTime(YYYYMMDDhhmmss[, timezone])

반환 값 (Returned value)

제공된 인자로 만든 DateTime 값. DateTime

YYYYMMDDhhmmssToDateTime64

연월일시분초 숫자를 담은 숫자를 DateTime64로 변환해요.

구문 (Syntax)

YYYYMMDDhhmmssToDateTime64(YYYYMMDDhhmmss[, precision[, timezone]])

반환 값 (Returned value)

제공된 인자로 만든 DateTime64 값. DateTime64

addInterval

제공된 날짜, 시간 포함 날짜 또는 문자열로 인코딩된 날짜에 시간 간격을 더해요. 더하기 결과가 데이터 타입의 경계를 벗어나면 결과는 정의되지 않아요. Interval 유형의 간격을 받아요. addDateaddTime의 기능을 결합해요.

구문 (Syntax)

addInterval(datetime, interval)

addDate

제공된 날짜, 시간 포함 날짜 또는 문자열로 인코딩된 날짜에 시간 간격을 더해요.

구문 (Syntax)

addDate(datetime, interval)

addDays

제공된 날짜/시간에 num_days 일을 더해요.

구문 (Syntax)

addDays(datetime, num_days)

addHours

제공된 날짜/시간에 num_hours 시간을 더해요.

구문 (Syntax)

addHours(datetime, num_hours)

addMicroseconds

제공된 날짜/시간에 num_microseconds 마이크로초를 더해요.

구문 (Syntax)

addMicroseconds(datetime, num_microseconds)

addMilliseconds

제공된 날짜/시간에 num_milliseconds 밀리초를 더해요.

구문 (Syntax)

addMilliseconds(datetime, num_milliseconds)

addMinutes

제공된 날짜/시간에 num_minutes 분을 더해요.

구문 (Syntax)

addMinutes(datetime, num_minutes)

addMonths

제공된 날짜/시간에 num_months 개월을 더해요.

구문 (Syntax)

addMonths(datetime, num_months)

addNanoseconds

제공된 날짜/시간에 num_nanoseconds 나노초를 더해요.

구문 (Syntax)

addNanoseconds(datetime, num_nanoseconds)

addQuarters

제공된 날짜/시간에 num_quarters 분기를 더해요.

구문 (Syntax)

addQuarters(datetime, num_quarters)

addSeconds

제공된 날짜/시간에 num_seconds 초를 더해요.

구문 (Syntax)

addSeconds(datetime, num_seconds)

addTupleOfIntervals

튜플의 간격을 제공된 날짜/시간에 한 번에 더해요. addInterval 함수들을 개별 호출하는 것보다 효율적이에요.

구문 (Syntax)

addTupleOfIntervals(datetime, tuple(interval1, interval2, ...))

addWeeks

제공된 날짜/시간에 num_weeks 주를 더해요.

구문 (Syntax)

addWeeks(datetime, num_weeks)

addYears

제공된 날짜/시간에 num_years 년을 더해요.

구문 (Syntax)

addYears(datetime, num_years)

age

startdateenddate 사이의 연수를 계산해요. 더 endofinterval 접미사로 다양한 단위(년, 분기, 월, 일, 주, 시, 분, 초)를 선택할 수 있어요. 결과는 항상 음수가 아닌 정수예요.

구문 (Syntax)

age('unit', startdate, enddate)

반환 값 (Returned value)

두 날짜 사이의 unit 단위 수. UInt* 또는 Float*

changeYear

주어진 날짜/시간의 연도를 지정된 값으로 바꿔요.

구문 (Syntax)

changeYear(datetime, value)

changeMonth

주어진 날짜/시간의 월을 지정된 값으로 바꿔요.

구문 (Syntax)

changeMonth(datetime, value)

changeDay

주어진 날짜/시간의 일을 지정된 값으로 바꿔요.

구문 (Syntax)

changeDay(datetime, value)

changeHour

주어진 날짜/시간의 시를 지정된 값으로 바꿔요.

구문 (Syntax)

changeHour(datetime, value)

changeMinute

주어진 날짜/시간의 분을 지정된 값으로 바꿔요.

구문 (Syntax)

changeMinute(datetime, value)

changeSecond

주어진 날짜/시간의 초를 지정된 값으로 바꿔요.

구문 (Syntax)

changeSecond(datetime, value)

dateDiff

startdateenddate 사이의 차이를 반환해요. unit(년, 분기, 월, 주, 일, 시, 분, 초 등)으로 결과를 표현해요.

구문 (Syntax)

dateDiff('unit', startdate, enddate, [timezone])

반환 값 (Returned value)

startdateenddate 사이의 unit 단위 차이. Int

dateName

지정된 날짜/시간 값에서 날짜 부분(unit)의 이름을 반환해요. 단위는 'year', 'quarter', 'month', 'week', 'dayofyear', 'day', 'weekday', 'hour', 'minute', 'second' 등이에요.

구문 (Syntax)

dateName(date_part, value)

dateTrunc

지정된 날짜 부분(unit)으로 자른 날짜/시간을 반환해요. 예를 들어 hour로 자르면 시 단위로 잘라요.

구문 (Syntax)

dateTrunc('unit', value[, timezone])

반환 값 (Returned value)

value를 지정된 단위로 자른 날짜/시간.

formatDateTime

시간을 strftime 형식에 따라 지정된 형식으로 포맷해요.

구문 (Syntax)

formatDateTime(time, format[, timezone])

반환 값 (Returned value)

포맷된 날짜/시간 문자열. String

formatDateTimeInJodaSyntax

시간을 Joda-Time 형식에 따라 포맷해요.

구문 (Syntax)

formatDateTimeInJodaSyntax(time, format[, timezone])

반환 값 (Returned value)

포맷된 날짜/시간 문자열. String

fromDaysSinceYearZero

0000년 1월 1일 이후 일 수를 Date로 변환해요.

구문 (Syntax)

fromDaysSinceYearZero(days)

반환 값 (Returned value)

Date 값. Date

fromDaysSinceYearZero32

0000년 1월 1일 이후 일 수를 Date32로 변환해요.

구문 (Syntax)

fromDaysSinceYearZero32(days)

반환 값 (Returned value)

Date32 값. Date32

fromModifiedJulianDay

약식 율리우스력 날짜(Modified Julian Day)Date로 변환해요.

구문 (Syntax)

fromModifiedJulianDay(days)

반환 값 (Returned value)

Date 값. Date

fromModifiedJulianDayOrNull

약식 율리우스력 날짜를 Date로 변환하거나, 유효하지 않으면 NULL을 반환해요.

구문 (Syntax)

fromModifiedJulianDayOrNull(days)

fromUTCTimestamp

날짜/시간(또는 문자열)을 특정 타임존의 날짜/시간으로 변환해요. 시간 값을 그대로 두고 타임존 세기를 조정해요.

구문 (Syntax)

fromUTCTimestamp(value, timezone)

fromUnixTimestamp

유닉스 타임스탬프(초)를 날짜/시간으로 변환해요. fromUnixTimestamp(t) = toDateTime(t)와 동등해요.

구문 (Syntax)

fromUnixTimestamp(t[, timezone])

반환 값 (Returned value)

유닉스 타임스탬프로 표현된 날짜/시간. DateTime

fromUnixTimestampInJodaSyntax

유닉스 타임스탬프를 Joda-Time 형식 규칙을 사용해 지정된 형식으로 포맷된 문자열로 변환해요.

구문 (Syntax)

fromUnixTimestampInJodaSyntax(unix_timestamp, format[, timezone])

반환 값 (Returned value)

포맷된 날짜/시간 문자열. String

localtime

쿼리 분석 순간의 현재 시간을 반환해요. 이 함수는 상수 표현식이에요.

구문 (Syntax)

localtime()

반환 값 (Returned value)

현재 시간. DateTime

makeDate

연, 월, 일에서 Date를 만들어요.

구문 (Syntax)

makeDate(year, month, day)

반환 값 (Returned value)

생성된 Date 값.

makeDate32

연, 월, 일에서 Date32를 만들어요.

구문 (Syntax)

makeDate32(year, month, day)

makeDateTime

연, 월, 일, 시, 분, 초에서 DateTime을 만들어요.

구문 (Syntax)

makeDateTime(year, month, day, hour, minute, second[, timezone])

반환 값 (Returned value)

생성된 DateTime 값.

makeDateTime64

연, 월, 일, 시, 분, 초와 선택적 소수 자리에서 DateTime64를 만들어요.

구문 (Syntax)

makeDateTime64(year, month, day, hour, minute, second[, fraction[, precision[, timezone]]])

monthName

지정된 날짜의 월 이름을 반환해요.

구문 (Syntax)

monthName(datetime)

now

쿼리 분석 시점의 현재 날짜와 시간을 반환해요. 이 함수는 상수 표현식이에요.

구문 (Syntax)

now([timezone])

별칭 (Aliases): CURRENT_TIMESTAMP, now()

반환 값 (Returned value)

현재 날짜와 시간. DateTime

now64

쿼리 분석 시점의 현재 날짜와 시간을 DateTime64로 반환해요.

구문 (Syntax)

now64([precision[, timezone]])

반환 값 (Returned value)

현재 날짜와 시간. DateTime64

nowInBlock

수신 데이터 블록의 각 행이 처리되는 순간의 현재 날짜와 시간을 반환해요.

구문 (Syntax)

nowInBlock([timezone])

nowInBlock64

수신 데이터 블록의 각 행이 처리되는 순간의 현재 날짜와 시간을 DateTime64로 반환해요.

구문 (Syntax)

nowInBlock64([precision[, timezone]])

serverTimezone

서버의 기본 타임존을 문자열로 반환해요.

구문 (Syntax)

serverTimezone()

subtractInterval

제공된 날짜/시간에서 시간 간격을 빼요. subtractDatesubtractTime의 기능을 결합해요.

구문 (Syntax)

subtractInterval(datetime, interval)

subtractDate

제공된 날짜/시간에서 기간을 빼요.

구문 (Syntax)

subtractDate(datetime, interval)

subtractDays / subtractHours / subtractMicroseconds / subtractMilliseconds / subtractMinutes / subtractMonths / subtractNanoseconds / subtractQuarters / subtractSeconds / subtractWeeks / subtractYears

제공된 날짜/시간에서 각각 일·시간·마이크로초·밀리초·분·개월·나노초·분기·초·주·년을 빼요.

구문 (Syntax)

subtractDays(datetime, num_days)
subtractHours(datetime, num_hours)
subtractMicroseconds(datetime, num_microseconds)
subtractMilliseconds(datetime, num_milliseconds)
subtractMinutes(datetime, num_minutes)
subtractMonths(datetime, num_months)
subtractNanoseconds(datetime, num_nanoseconds)
subtractQuarters(datetime, num_quarters)
subtractSeconds(datetime, num_seconds)
subtractWeeks(datetime, num_weeks)
subtractYears(datetime, num_years)

subtractTupleOfIntervals

튜플로 지정된 간격들을 제공된 날짜/시간에서 한 번에 빼요.

구문 (Syntax)

subtractTupleOfIntervals(datetime, tuple(interval1, interval2, ...))

timeDiff

두 날짜/시간 값 사이의 차이를 초 단위로 반환해요. 이는 dateDiff('second', startdate, enddate)와 동등해요.

구문 (Syntax)

timeDiff(startdate, enddate)

timeSlot

시간을 반시간 단위로 반올림해요. timeSlot은 주어진 시간의 시작 시각(반 시간 경계)을 반환해요.

구문 (Syntax)

timeSlot(StartTime)

timeSlots

주어진 시작 시간부터 중단까지의 반시간 슬롯을 담은 배열을 반환해요.

구문 (Syntax)

timeSlots(start_time[, duration])

timestamp

표준 SQL TIMESTAMP 연산자에 해당해요.

구문 (Syntax)

timestamp(date_and_time)

timezone

쿼리 처리 순간의 타임존을 반환해요. 상수 표현식이에요.

구문 (Syntax)

timezone()

timezoneOf

지정된 DateTime 값이 사용하는 타임존을 반환해요.

구문 (Syntax)

timezoneOf(value)

timezoneOffset

타임존 오프셋을 반환해요.

구문 (Syntax)

timezoneOffset(datetime)

toDayOfMonth

날짜의 일(1~31)을 반환해요.

구문 (Syntax)

toDayOfMonth(value)

toDayOfWeek

날짜의 요일을 반환해요. 옵션으로 요일 번호 체계를 지정할 수 있어요.

구문 (Syntax)

toDayOfWeek(value[, mode])

toDayOfYear

날짜의 연중 일 수(1~366)를 반환해요.

구문 (Syntax)

toDayOfYear(value)

toDaysInMonth

해당 월의 일 수를 반환해요.

구문 (Syntax)

toDaysInMonth(value)

toDaysSinceYearZero

0000년 1월 1일 이후의 일 수를 계산해요.

구문 (Syntax)

toDaysSinceYearZero(value)

toHour

날짜/시간의 시(0~23)를 반환해요.

구문 (Syntax)

toHour(value)

toISOWeek

ISO 주 번호를 반환해요.

구문 (Syntax)

toISOWeek(value)

toISOYear

ISO 연도를 반환해요.

구문 (Syntax)

toISOYear(value)

toLastDayOfMonth

지정된 날짜가 속한 월의 마지막 날짜를 반환해요.

구문 (Syntax)

toLastDayOfMonth(value)

toLastDayOfWeek

지정된 날짜가 속한 주의 마지막 날짜를 반환해요.

구문 (Syntax)

toLastDayOfWeek(value)

toMicrosecond

지정된 날짜/시간의 마이크로초 부분(0~999999)을 반환해요.

구문 (Syntax)

toMicrosecond(value[, timezone])

toMillisecond

날짜/시간의 밀리초 부분을 반환해요.

구문 (Syntax)

toMillisecond(value[, timezone])

toMinute

날짜/시간의 분(0~59)을 반환해요.

구문 (Syntax)

toMinute(value)

toModifiedJulianDay

Date를 약식 율리우스력 날짜로 변환해요. toModifiedJulianDayDate32를 지원해요.

구문 (Syntax)

toModifiedJulianDay(value)

반환 값 (Returned value)

약식 율리우스력 날짜. Int32

toModifiedJulianDayOrNull

Date를 약식 율리우스력 날짜로 변환하거나, 유효하지 않으면 NULL을 반환해요.

구문 (Syntax)

toModifiedJulianDayOrNull(value)

toMonday

지정된 날짜가 속한 주의 월요일을 반환해요.

구문 (Syntax)

toMonday(value)

toMonth

날짜의 월(1~12)을 반환해요.

구문 (Syntax)

toMonth(value)

toMonthNumSinceEpoch

1970-01-01 이후의 월 수를 반환해요.

구문 (Syntax)

toMonthNumSinceEpoch(value)

toNanosecond

날짜/시간의 나노초 부분(0~999999999)을 반환해요.

구문 (Syntax)

toNanosecond(value[, timezone])

toQuarter

날짜의 분기(1~4)를 반환해요.

구문 (Syntax)

toQuarter(value)

toRelativeDayNum

指定 날짜의 상대 일 수를 반환해요.

구문 (Syntax)

toRelativeDayNum(value)

toRelativeHourNum

지정 날짜의 상대 시간 수를 반환해요.

구문 (Syntax)

toRelativeHourNum(value)

toRelativeMinuteNum

지정 날짜의 상대 분 수를 반환해요.

구문 (Syntax)

toRelativeMinuteNum(value)

toRelativeMonthNum

지정 날짜의 상대 월 수를 반환해요.

구문 (Syntax)

toRelativeMonthNum(value)

toRelativeQuarterNum

지정 날짜의 상대 분기 수를 반환해요.

구문 (Syntax)

toRelativeQuarterNum(value)

toRelativeSecondNum

지정 날짜의 상대 초 수를 반환해요.

구문 (Syntax)

toRelativeSecondNum(value)

toRelativeWeekNum

지정 날짜의 상대 주 수를 반환해요.

구문 (Syntax)

toRelativeWeekNum(value)

toRelativeYearNum

지정 날짜의 상대 연 수를 반환해요.

구문 (Syntax)

toRelativeYearNum(value)

toSecond

날짜/시간의 초(0~59)를 반환해요.

구문 (Syntax)

toSecond(value)

toStartOfDay

인자에 로컬의 시작 시각(자정)을 더해요.

구문 (Syntax)

toStartOfDay(value[, timezone])

toStartOfFifteenMinutes

지정된 시간을 15분 경계로 내림해요.

구문 (Syntax)

toStartOfFifteenMinutes(value)

toStartOfFiveMinutes

지정된 시간을 5분 경계로 내림해요.

구문 (Syntax)

toStartOfFiveMinutes(value)

toStartOfHour

지정된 시간을 시 경계로 내림해요.

구문 (Syntax)

toStartOfHour(value[, timezone])

toStartOfISOYear

ISO 연도의 시작을 내림해요.

구문 (Syntax)

toStartOfISOYear(value)

toStartOfInterval

지정된 간격 경계로 내림해요.

구문 (Syntax)

toStartOfInterval(value, interval[, timezone])

toStartOfMicrosecond

지정된 시간을 마이크로초 경계로 내림해요.

구문 (Syntax)

toStartOfMicrosecond(value[, timezone])

toStartOfMillisecond

지정된 시간을 밀리초 경계로 내림해요.

구문 (Syntax)

toStartOfMillisecond(value[, timezone])

toStartOfMinute

지정된 시간을 분 경계로 내림해요.

구문 (Syntax)

toStartOfMinute(value[, timezone])

toStartOfMonth

지정된 날짜를 월의 시작으로 내림해요.

구문 (Syntax)

toStartOfMonth(value)

toStartOfNanosecond

지정된 시간을 나노초 경계로 내림해요.

구문 (Syntax)

toStartOfNanosecond(value[, timezone])

toStartOfQuarter

지정된 날짜를 분기의 시작으로 내림해요.

구문 (Syntax)

toStartOfQuarter(value)

toStartOfSecond

지정된 시간을 초 경계로 내림해요.

구문 (Syntax)

toStartOfSecond(value[, timezone])

toStartOfTenMinutes

지정된 시간을 10분 경계로 내림해요.

구문 (Syntax)

toStartOfTenMinutes(value)

toStartOfWeek

지정된 날짜를 주의 시작으로 내림해요.

구문 (Syntax)

toStartOfWeek(value[, mode])

toStartOfYear

지정된 날짜를 연도의 시작으로 내림해요.

구문 (Syntax)

toStartOfYear(value)

toTimeWithFixedDate

날짜를 고정된 값으로 두고 시간 부분을 유지해요.

구문 (Syntax)

toTimeWithFixedDate(value)

toTimezone

지정된 날짜/시간을 대상 타임존으로 변환해요. 내부(Unix) 값은 변경되고 시각은 동일하게 유지돼요.

구문 (Syntax)

toTimezone(value, timezone)

toUTCTimestamp

지정된 날짜/시간을 UTC로 변환해요. 이는 toTimezone(value, 'UTC')와 같아요.

구문 (Syntax)

toUTCTimestamp(value)

toUnixTimestamp

주어진 날짜/시간에 대한 유닉스 타임스탬프(초)를 반환해요.

구문 (Syntax)

toUnixTimestamp(value[, timezone])

반환 값 (Returned value)

유닉스 타임스탬프. UInt32 또는 UInt64, 또는 String 입력이면 DateTime.

toWeek

날짜의 주 번호를 반환해요. 주 번호 0~53 사이.

구문 (Syntax)

toWeek(value[, mode])

toYYYYMM

연월을 숫자로 반환해요. 연도 부분은 100을 곱해 월과 합쳐져요.

구문 (Syntax)

toYYYYMM(value)

toYYYYMMDD

연월일을 숫자로 반환해요.

구문 (Syntax)

toYYYYMMDD(value)

toYYYYMMDDhhmmss

연월일시분초를 숫자로 반환해요.

구문 (Syntax)

toYYYYMMDDhhmmss(value[, timezone])

toYear

날짜의 연도 부분을 반환해요.

구문 (Syntax)

toYear(value)

toYearNumSinceEpoch

1970-01-01 이후의 연 수를 반환해요.

구문 (Syntax)

toYearNumSinceEpoch(value)

toYearWeek

연도와 주를 결합한 값을 반환해요. 연(year)에는 주(week) 수를 100으로 곱해 더해요.

구문 (Syntax)

toYearWeek(value[, mode])

today

현재 날짜를 반환해요. toDate(now())와 같아요.

구문 (Syntax)

today()

별칭 (Aliases): CURRENT_DATE

yesterday

어제 날짜를 반환해요. today() - 1과 같아요. CURRENT_DATE - 1과 동등해요.

구문 (Syntax)

yesterday()

더 알아보기 (Learn more)