tencent cloud

Data Lake Compute

日時関数

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-12-25 12:00:07

DATE

関数構文:
DATE(<expr> date|timestamp|string)
サポートエンジン:SparkSQL、Presto。
使用説明:強制的にdate型に変換します。
戻り値の型:date。
例:
> select date('2022-02-02');
2022-02-02

TIMESTAMP

関数構文:
TIMESTAMP(<expr> date|timestamp|string)
サポートエンジン:SparkSQL、Presto。
使用説明:timestamp への強制型変換。
戻り値の型:timestamp。
例:
> select timestamp('2022-02-02 11:11:11');
2022-02-02 11:11:11

ADD_MONTHS

関数構文:
ADD_MONTHS(<start_date> date|timestamp|string, <num> integer)
サポートエンジン:SparkSQL、Presto。
使用説明:start_date から num か月後の日付を返します。
戻り値の型:date。
例:
> SELECT add_months('2016-08-31', 1);
2016-09-30

CURRENT_DATE

関数構文:
CURRENT_DATE
サポートエンジン:SparkSQL、Presto。
使用説明:クエリ計算開始時の現在の日付を返します。
戻り値の型:date。
例:
> SELECT CURRENT_DATE;
2022-07-27

CURRENT_TIMESTAMP

関数構文:
CURRENT_TIMESTAMP
サポートエンジン:SparkSQL、Presto。
使用説明:クエリ計算開始時の現在のタイムスタンプを返します。
戻り値の型:timestamp。
例:
> SELECT CURRENT_TIMESTAMP;
2022-07-27 18:06:00.632

CURRENT_TIMEZONE

関数構文:
CURRENT_TIMEZONE(
サポートエンジン:SparkSQL、Presto。
使用説明:現在のセッションのローカルタイムゾーンを返します。
戻り型:string。
例:
> select CURRENT_TIMEZONE();
Asia/Shanghai

DATEDIFF

関数構文:
DATEDIFF(<end> date|timestamp|string, <start> date|timestamp|string)
サポートエンジン:SparkSQL、Presto。
使用説明:start から end までの日数を返します。
戻り型:integer。
例:
> SELECT datediff('2009-07-31', '2009-07-30');
1
> SELECT datediff('2009-07-30', '2009-07-31');
-1

DATE_ADD

関数構文:
DATE_ADD(<start_dates> date|timestamp|string, <num> integer)
サポートエンジン:SparkSQL、Presto。
使用説明:start_date から num 日後の日付を返します。
戻り値の型:date。
例:
> SELECT date_add('2016-07-30', 1);
2016-07-31

DATE_FORMAT

関数構文:
DATE_FORMAT(<ts> date|timestamp|string, <format> string)
サポートエンジン:SparkSQL、Presto。
使用説明:タイムスタンプを指定された日付形式の文字列値に変換します。
戻り型:string。
例:
> SELECT date_format('2016-04-08', 'y');
2016

DATE_SUB

関数構文:
DATE_SUB(<start_date> date|timestamp|string, <num> integer)
サポートエンジン:SparkSQL、Presto。
使用説明:start_date から num 日前の日付を返します。
戻り値の型:date。
例:
> SELECT date_sub('2016-07-30', 1);
2016-07-29

DAY

関数構文:
DAY(<d> date|timestamp|string)
サポートエンジン:SparkSQL、Presto。
使用説明:日付/タイムスタンプdがその月の何日目かを計算します。
戻り型:integer。
例:
> SELECT day('2009-07-30');
30

DAYOFYEAR

関数構文:
DAYOFYEAR(<d> date|timestamp|string)
サポートエンジン:SparkSQL、Presto。
使用説明:dがその年の何日目かを計算します。
戻り型:integer。
例:
> SELECT dayofyear('2016-04-09');
100

DAYOFMONTH

関数構文:
DAYOFMONTH
サポートエンジン:SparkSQL、Presto。
使用説明:日付/タイムスタンプdがその月の何日目かを計算します。
戻り型:integer。
例:
> SELECT dayofmonth('2009-07-30');
30

FROM_UNIXTIME

関数構文:
FROM_UNIXTIME(<unix_time> bigint[, <fmt> string])
サポートエンジン:SparkSQL、Presto。
使用説明:unix_timeが表す日付/時刻を形式fmtで返します。fmtを省略した場合、'yyyy-MM-dd HH:mm:ss'が使用されます。
戻り型:string。
例:
> SELECT from_unixtime(0, 'yyyy-MM-dd HH:mm:ss');
1969-12-31 16:00:00
> SELECT from_unixtime(0);
1969-12-31 16:00:00

FROM_UTC_TIMESTAMP

関数構文:
FROM_UTC_TIMESTAMP(<ts> timestamp, <timezone> string)
サポートエンジン:SparkSQL、Presto。
使用説明:utcタイムスタンプを指定し、その時間を指定されたタイムゾーンのタイムスタンプとして表示します。
戻り値の型:timestamp。
例:
> SELECT from_utc_timestamp('2016-08-31', 'Asia/Seoul');
2016-08-31 09:00:00

HOUR

関数構文:
HOUR(<ts> string|timestamp)
サポートエンジン:SparkSQL、Presto。
使用説明:指定されたタイムスタンプ ts の時間部分を返します。
戻り型:integer。
例:
> SELECT hour('2009-07-30 12:58:59');
12

LAST_DAY

関数構文:
LAST_DAY(<d> date|string)
サポートエンジン:SparkSQL、Presto。
使用説明:指定された日付 d の現在の月の最終日を返します。
戻り値の型:date。
例:
> SELECT last_day('2009-01-12');
2009-01-31

MINUTE

関数構文:
MINUTE(<ts> timestamp|string)
サポートエンジン:SparkSQL、Presto。
使用説明:タイムスタンプ ts の分を返します。
戻り型:integer。
例:
> SELECT minute('2009-07-30 12:58:59');
58

MONTH

関数構文:
MONTH(<d> date|timestamp|string)
サポートエンジン:SparkSQL、Presto。
使用説明:指定された日付 d の月を返します。
戻り型:integer。
例:
> SELECT month('2016-07-30');
7

MONTHS_BETWEEN

関数構文:
MONTHS_BETWEEN(<ts1> date|timestamp|string, <ts2> date|timestamp|string, <roundOff> boolean)
サポートエンジン:SparkSQL、Presto。
使用説明:ts1がts2より遅い場合、結果は正になります。ts1とts2が当月の同じ日である場合、または両方が当月の最終日である場合、その日の時間は無視されます。それ以外の場合、差は月ごとに31日で計算され、roundOffがfalseでない限り、8桁に丸められます。
戻り型:double。
例:
> SELECT months_between('1997-02-28 10:30:00', '1996-10-30');
3.94959677
> SELECT months_between('1997-02-28 10:30:00', '1996-10-30', false);
3.9495967741935485

NEXT_DAY

関数構文:
NEXT_DAY(<start_date> date|timestamp|string, <day_of_week> string
サポートエンジン:SparkSQL、Presto。
使用説明:start_date後の最初の指定曜日を返します。
戻り値の型: SparkSQL:date Presto:string
例:
> SELECT next_day('2015-01-14', 'TU');
2015-01-20

NOW

関数構文:
NOW()
サポートエンジン:SparkSQL、Presto。
使用説明:現在のタイムスタンプを返します。
戻り値の型:timestamp。
例:
> SELECT now();
2020-04-25 15:49:11.914

QUARTER

関数構文:
QUARTER(<d> date|timestamp|string)
サポートエンジン:SparkSQL、Presto。
使用説明:d が属する四半期を返します。
戻り型:integer。
例:
> SELECT quarter('2016-08-31');
3

SECOND

関数構文:
SECOND(<ts> timestamp|string)
サポートエンジン:SparkSQL、Presto。
使用説明:現在のタイムスタンプの秒数を返します。
戻り型:integer。
例:
> SELECT second('2009-07-30 12:58:59');
59

TO_TIMESTAMP

関数構文:
TO_TIMESTAMP(<ts_str> string[, <fmt> string]
サポートエンジン:SparkSQL、Presto。
使用説明:fmt 形式の ts_str 式をタイムスタンプに解析します。無効な入力の場合は NULL を返します。デフォルトでは、fmt を省略すると、タイムスタンプの強制変換ルールに従います。結果のデータ型は設定値と一致します。
戻り値の型:timestamp。
例:
> SELECT to_timestamp('2016-12-31 00:12:00');
2016-12-31 00:12:00
> SELECT to_timestamp('2016-12-31', 'yyyy-MM-dd');
2016-12-31 00:00:00

TO_DATE

関数構文:
TO_DATE(<date_str> string[, <fmt> string])
サポートエンジン:SparkSQL、Presto。
使用説明:fmt 形式の date_str 式を日付に解析します。無効な入力の場合は NULL を返します。デフォルトでは、fmt を省略すると、日付の強制変換ルールに従います。結果のデータ型は設定値と一致します。
戻り値の型:date。
例:
> SELECT to_date('2009-07-30 04:17:52');
2009-07-30
> SELECT to_date('2016-12-31', 'yyyy-MM-dd');
2016-12-31

TO_UNIX_TIMESTAMP

関数構文:
TO_UNIX_TIMESTAMP(<ts> date|timestamp|string[, <fmt> string])
サポートエンジン:SparkSQL、Presto。
使用説明:tsのunixタイムスタンプを返します。
戻り型:bigint。
例:
> SELECT to_unix_timestamp('2016-04-08', 'yyyy-MM-dd');
1460098800

TO_UTC_TIMESTAMP

関数構文:
-- SparkSQL
TO_UTC_TIMESTAMP(<ts> date|timestamp|string, <timezone> string)

-- Presto
TO_UTC_TIMESTAMP(<ts> date|timestamp|string|interger|double|decimal, <timezone> string)
サポートエンジン:SparkSQL、Presto。
使用説明:指定されたタイムゾーンのタイムスタンプをUTCに変換します。
戻り値の型:timestamp。
例:
-- SparkSQL
> SELECT to_utc_timestamp('2016-08-31', 'Asia/Seoul');
2016-08-30 15:00:00
-- Presto
> select to_utc_timestamp(10000, 'UTC');
1970-01-01 08:00:10

TRUNC

関数構文:
TRUNC(<d> date|string, <fmt> string)
サポートエンジン:SparkSQL、Presto。
使用説明:指定された日付 d を fmt で指定された時間単位で切り捨てた後の日付値を返します。
戻り値の型:date。
例:
> SELECT trunc('2019-08-04', 'week');
2019-07-29
> SELECT trunc('2019-08-04', 'quarter');
2019-07-01
> SELECT trunc('2009-02-12', 'MM');
2009-02-01
> SELECT trunc('2015-10-27', 'YEAR');
2015-01-01

DATE_TRUNC

関数構文:
DATE_TRUNC(<fmt> string, <ts> date|timestamp|string)
サポートエンジン:SparkSQL、Presto。
使用説明:タイムスタンプ ts を fmt に従って切り捨てた後のタイムスタンプを返します。
戻り値の型:timestamp。
例:
> SELECT date_trunc('YEAR', '2015-03-05T09:32:05.359');
2015-01-01 00:00:00
> SELECT date_trunc('MM', '2015-03-05T09:32:05.359');
2015-03-01 00:00:00
> SELECT date_trunc('DD', '2015-03-05T09:32:05.359');
2015-03-05 00:00:00
> SELECT date_trunc('HOUR', '2015-03-05T09:32:05.359');
2015-03-05 09:00:00
> SELECT date_trunc('MILLISECOND', '2015-03-05T09:32:05.123456');
2015-03-05 09:32:05.123

UNIX_TIMESTAMP

関数構文:
UNIX_TIMESTAMP([<ts> date|timestamp|string[, fmt]])
サポートエンジン:SparkSQL、Presto。
使用説明:現在または指定された時刻のUNIXタイムスタンプを返します。
戻り型:bigint。
例:
> SELECT unix_timestamp();
1476884637
> SELECT unix_timestamp('2016-04-08', 'yyyy-MM-dd');
1460041200

DAYOFWEEK

関数構文:
DAYOFWEEK(<d> date|timestamp|string)
サポートエンジン:parkSQL、Presto。
使用説明:返される日付/タイムスタンプの「d」は曜日を表します。
戻り型:nteger。
例:
> SELECT dayofweek('2009-07-30');
5

WEEKDAY

関数構文:
WEEKDAY(<d> date|timestamp|string)
サポートエンジン:SparkSQL、Presto。
使用説明:「d」は曜日を表す日付/タイムスタンプを返します。
戻り型:integer。
例:
> SELECT weekday('2009-07-30');
3

WEEKOFYEAR

関数構文:
WEEKOFYEAR(<d> date|timestamp|string)
サポートエンジン:SparkSQL、Presto。
使用説明:指定された日付「d」が年間の第何週目であるかを返します。
戻り型:integer。
例:
> SELECT weekofyear('2008-02-20');
8

YEAR

関数構文:
YEAR(<d> date|timestamp|string)
サポートエンジン:SparkSQL、Presto。
使用説明:日付/タイムスタンプ「d」の年を返します。
戻り型:integer。
例:
> SELECT year('2016-07-30');
2016

MAKE_DATE

関数構文:
MAKE_DATE(<year> integer, <month> integer, <day> integer)
サポートエンジン:SparkSQL、Presto。
使用説明:year、month、dayフィールドから日付を作成します。
戻り型:date。
例:
> SELECT make_date(2013, 7, 15);
2013-07-15
> SELECT make_date(2019, 7, NULL);
NULL

MAKE_TIMESTAMP

関数構文:
MAKE_TIMESTAMP(<year> integer, <month> integer, <day> integer, <hour> integer, <min> integer, <sec> integer|double|decimal[, <timezone> string])
サポートエンジン:SparkSQL、Presto。
使用説明:指定されたフィールドに基づいてタイムスタンプを作成します。
戻り型:timestamp。
例:
> SELECT make_timestamp(2014, 12, 28, 6, 30, 45.887);
2014-12-28 06:30:45.887
> SELECT make_timestamp(2014, 12, 28, 6, 30, 45.887, 'CET');
2014-12-27 21:30:45.887
> SELECT make_timestamp(2019, 6, 30, 23, 59, 60);
2019-07-01 00:00:00
> SELECT make_timestamp(2019, 6, 30, 23, 59, 1);
2019-06-30 23:59:01
> SELECT make_timestamp(null, 7, 22, 15, 30, 0);
NULL

DATE_PART

関数構文:
DATE_PART(<field> string, <source> date|timestamp)
サポートエンジン:SparkSQL、Presto。
使用説明:日付/タイムスタンプの一部を抽出します。
戻り型:integer|double。
例:
> SELECT date_part('YEAR', TIMESTAMP '2019-08-12 01:00:00.123456');
2019
> SELECT date_part('week', timestamp '2019-08-12 01:00:00.123456');
33
> SELECT date_part('doy', DATE'2019-08-12');
224
> SELECT date_part('SECONDS', timestamp'2019-10-01 00:00:01.000001');
1.000001

DATE_FROM_UNIX_DATE

関数構文:
DATE_FROM_UNIX_DATE(<unix_timestamp> integer)
サポートエンジン:SparkSQL、Presto。
使用説明:1970-01-01からの日数に基づいて日付を作成します。
戻り値の型:date。
例:
> SELECT date_from_unix_date(1);
1970-01-02

UNIX_DATE

関数構文:
UNIX_DATE(<d> date)
サポートエンジン:SparkSQL、Presto。
使用説明:1970-01-01からの日数を返します。
戻り型:integer。
例:
> SELECT unix_date(DATE("1970-01-02"));
1

TIMESTAMP_SECONDS

関数構文:
TIMESTAMP_SECONDS(<sec> bigint|double|decimal)
サポートエンジン:SparkSQL、Presto。
使用説明:UTCエポックからの秒数でタイムスタンプを作成します。
戻り値の型:timestamp。
例:
> SELECT timestamp_seconds(1230219000);
2008-12-25 07:30:00
> SELECT timestamp_seconds(1230219000.123);
2008-12-25 07:30:00.123

TIMESTAMP_MILLIS

関数構文:
TIMESTAMP_MILLIS(<milli> bigint|double|decimal)
サポートエンジン:SparkSQL、Presto。
使用説明:UTCエポックからのミリ秒数でタイムスタンプを作成します。
戻り値の型:timestamp。
例:
> SELECT timestamp_millis(1230219000123);
2008-12-25 07:30:00.123

TIMESTAMP_MICROS

関数構文:
TIMESTAMP_MICROS(<micro> bigint)
サポートエンジン:SparkSQL、Presto。
使用説明:UTCエポックからのミリ秒数でタイムスタンプを作成します。
戻り値の型:timestamp。
例:
> SELECT timestamp_micros(1230219000123123);
2008-12-25 07:30:00.123123

UNIX_SECONDS

関数構文:
UNIX_SECONDS(<ts> timestamp)
サポートエンジン:SparkSQL、Presto。
使用説明:1970-01-01 00:00:00 UTCからの秒数を返します。
戻り型:bigint。
例:
> SELECT unix_seconds(TIMESTAMP('1970-01-01 00:00:01Z'));
1

UNIX_MILLIS

関数構文:
UNIX_MILLIS(<ts> timestamp)
サポートエンジン:SparkSQL、Presto。
使用説明:1970-01-01 00:00:00 UTCからのミリ秒数を返します。
戻り型:bigint。
例:
> SELECT unix_millis(TIMESTAMP('1970-01-01 00:00:01Z'));
1000

UNIX_MICROS

関数構文:
UNIX_MICROS(<ts> timestamp)
サポートエンジン:SparkSQL。
使用説明:1970-01-01 00:00:00 UTCからのマイクロ秒数を返します。
戻り型:bigint。
例:
> SELECT unix_micros(timestamp '1970 00:00:00.001')
1000

DATEADD/TIMESTAMP_ADD

関数構文:
TIMESTAMP_ADD(<date|timestamp> dt, <int> delta, <string> pattern)
TIMESTAMP_ADD(<date|timestamp> dt, <int> delta, <string> pattern)
サポートエンジン:SparkSQL。
エンジンバージョン要件:2023年12月07日以降に購入したエンジン、または最新のエンジンにアップグレードする必要があります。
使用説明:指定された日付または時刻に、指定された単位とオフセットに基づいて最終的な時間を計算します。
dt:入力された日付または時刻の形式。nullの場合はnullを返します。
delta:必須、intタイプ。nullの場合はnullを返します。
pattern:必須、stringタイプ、単位。patternは以下をサポートできます:
年(標準「y」、互換性あり「-year」、「yyyy」)
月(標準「M」、互換性あり「-month」、「-mon」、「MM」)
日(標準「d」、互換性あり「-day」、「dd」)
時間(標準「H」、互換性のある形式:「-hour」、「hh」、「HH」、「h」)
分 (標準「m」、互換性のある「mi」、「mm」)
秒(標準「s」、「ss」にも対応)
マイクロ秒(標準「S」、互換性のある「SSS」)
他のタイプの入力は許可されていません。そうでない場合はエラーが発生します。
注意:
デルタの単位が月の場合、デルタ値を加算した後の月部分がDayのオーバーフローを引き起こさない場合、Dayの値は変更されません。それ以外の場合、Dayの値は結果の月の最終日に設定されます。
出力時間はデフォルトでタイムゾーンとなります。
月Mと分mの単位の区別;0-12時間制hと0-24時間制Hに対応していますが、Hの使用を推奨します。
戻り値の型:timestamp。
例:
> SELECT timestamp_add(date '2016-12-31', -1, 'M');
2016-11-30T00:00:00.000+08:00
> SELECT timestamp_add(timestamp '2016-12-31 00:12:00', 1, 'm');
2016-12-31T00:13:00.000+08:00
> SELECT timestamp_add(timestamp '2016-12-31 00:00:00', -1, 'm');
2016-12-30T23:59:00.000+08:00


ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック