날짜·시간 함수
날짜·시간 함수 (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 유형의 간격을 받아요. addDate와 addTime의 기능을 결합해요.
구문 (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
startdate와 enddate 사이의 연수를 계산해요. 더 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
startdate와 enddate 사이의 차이를 반환해요. unit(년, 분기, 월, 주, 일, 시, 분, 초 등)으로 결과를 표현해요.
구문 (Syntax)
dateDiff('unit', startdate, enddate, [timezone])
반환 값 (Returned value)
startdate와 enddate 사이의 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
제공된 날짜/시간에서 시간 간격을 빼요. subtractDate와 subtractTime의 기능을 결합해요.
구문 (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를 약식 율리우스력 날짜로 변환해요. toModifiedJulianDay는 Date32를 지원해요.
구문 (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()