すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:日付時刻関数

最終更新日:Mar 27, 2025

SQL分析機能は、共通の日付関数を備えています。ビジネス要件に基づいて日付を計算および変換するために、日付関数を呼び出すことができます。このトピックでは、SQL分析機能でサポートされている日付関数の構文とパラメーターについて説明します。また、日付関数を呼び出してデータを開発する方法の例も示します。

関数

説明

ADD_MONTHS

指定した日付に数か月を追加した後に取得される日付値を返します。

CURRENT_TIMESTAMP

現在のタイムスタンプを返します。

DATE_ADD

delta で指定された間隔に基づいて、日付値に日数を加算または減算します。DATE_ADD 関数は、DATE_SUB 関数の逆関数です。

DATE_SUB

delta で指定された間隔に基づいて、日付値に日数を加算または減算します。DATE_SUB 関数は、DATE_ADD 関数の逆関数です。

DAY

日付値の日を返します。

DAYOFMONTH

日付値の日を返します。

DAYOFWEEK

日付値が属する曜日を返します。

DAYOFYEAR

年の通算日を表す整数を返します。

EXTRACT

タイムスタンプの指定された構成要素を返します。

FROM_UNIXTIME

BIGINT 型の UNIX タイムスタンプを DATETIME 型の日付値に変換します。

GETDATE

現在のシステム時刻を返します。

HOUR

日付値の「時」の構成要素を返します。

INTERVAL_DAY_TIME

STRING 型の日付値を INTERVAL_DAY_TIME 型の変数に変換します。

ISDATE

日付文字列を指定された形式の日付値に変換できるかどうかを判断します。

LAST_DAY

日付値が属する月の末日を返します。

LASTDAY

日付値が属する月の末日を返します。

MINUTE

日付値の「分」の構成要素を返します。

MONTH

日付値が属する月を返します。

MONTHS_BETWEEN

指定された日付値間の月数を返します。

NEXT_DAY

日付値より後で、指定された週に一致する最初の曜日の日付を返します。

NOW

現在のシステム日付と時刻を返します。

QUARTER

日付値が属する四半期を返します。

SECOND

日付値の「秒」の構成要素を返します。

TO_CHAR

日付値を指定された形式の文字列に変換します。

TO_DATE

文字列を指定された形式の日付値に変換します。

UNIX_TIMESTAMP

日付値を整数である UNIX タイムスタンプに変換します。

WEEKDAY

日付値が属する曜日を表す数値を返します。

WEEKOFYEAR

日付値が属する年の週を表す数値を返します。

YEAR

日付値が属する年を返します。

ADD_MONTHS

  • 構文

    string add_months(date|datetime|timestamp|string <startdate>, int <num_months>)
  • 説明

    num_months で指定された月数を startdate の値に追加した後に取得される日付値を返します。

  • パラメーター

    • startdate: 必須。 DATE、DATETIME、TIMESTAMP、または STRING 型の値。値は yyyy-mm-ddyyyy-mm-dd hh:mi:ss、または yyyy-mm-dd hh:mi:ss.ff3 形式です。値が STRING 型の場合、値には少なくとも yyyy-mm-dd 部分が含まれている必要があり、余分な文字列を含めることはできません。

    • num_months: 必須。 INT 型の値。

  • 戻り値

    STRING 型の値が返されます。戻り値は yyyy-mm-dd フォーマットです。戻り値は、次のルールに基づいて異なります。

    • startdate の値が DATE、DATETIME、TIMESTAMP、または STRING 型でない場合、または形式が無効な場合は、null が返されます。

    • startdate の値が null の場合は、エラーが返されます。

    • num_months の値が null の場合は、null が返されます。

  • -- 戻り値は 2017-05-14 です。
    select add_months('2017-02-14',3);
    
    -- 戻り値は 0017-05-14 です。
    select add_months('17-2-14',3);
    
    -- 戻り値は 2017-05-14 です。
    select add_months('2017-02-14 21:30:00',3);
    
    -- 戻り値は null です。
    select add_months('20170214',3);
    
    -- 戻り値は null です。
    select add_months('2017-02-14 21:30:00',null);

CURRENT_TIMESTAMP

  • 構文

    timestamp current_timestamp()
  • 説明

    現在のタイムスタンプを返します。戻り値は固定されていません。

  • 戻り値

    TIMESTAMP 型の値が返されます。

  • select current_timestamp(); 

DATE_ADD

  • 構文

    date date_add(date|timestamp|string <startdate>, bigint <delta>)
  • 説明

    delta で指定された日数を startdate で指定された日付値に加算または減算します。現在の時刻に加算または減算するには、この関数を GETDATE 関数と一緒に呼び出すことができます。

    この関数のロジックは、DATE_SUB 関数のロジックと反対です。

  • パラメーター

    • startdate: 必須。開始日。 DATE、DATETIME、または STRING 型の値がサポートされています。

      STRING 型の値を指定した場合、計算前に値は暗黙的に DATE 型の値に変換されます。値は 'yyyy-mm-dd' フォーマットである必要があります。例: '2019-12-27'

    • delta: 必須。加算または減算する日数。このパラメーターの値は BIGINT 型である必要があります。delta の値が 0 より大きい場合は、開始日に日数が加算されます。delta の値が 0 未満の場合は、開始日から日数が減算されます。delta の値が 0 の場合は、日付値は変更されません。

  • 戻り値

    DATE 型の値が返されます。戻り値は yyyy-mm-dd フォーマットです。戻り値は、次のルールに基づいて異なります。

    • startdate の値が DATE、DATETIME、または STRING 型でない場合は、エラーが返されます。

    • startdate の値が null の場合は、エラーが返されます。

    • delta の値が null の場合は、null が返されます。

  • -- 戻り値は 2005-03-01 です。 1 日を追加すると、結果は 2 月の末日を超えます。 3 月の最初の日が返されます。
    select date_add(datetime '2005-02-28 00:00:00', 1);
    
    -- 戻り値は 2005-02-27 です。 1 日が減算されます。
    select date_add(date '2005-02-28', -1);
    
    -- 戻り値は 2005-03-20 です。
    select date_add('2005-02-28 00:00:00', 20);
    
    -- 現在の時刻が 2020-11-17 16:31:44 の場合、戻り値は 2020-11-16 です。
    select date_add(getdate(),-1);
    
    -- 戻り値は null です。
    select date_add('2005-02-28 00:00:00', null);

DATE_SUB

  • 構文

    date date_sub(date|timestamp|string <startdate>, bigint <delta>)
  • 説明

    delta で指定された日数を startdate で指定された日付値に加算または減算します。現在の時刻に加算または減算するには、この関数を GETDATE 関数と一緒に呼び出すことができます。

    この関数のロジックは、DATE_ADD 関数のロジックと反対です。

  • パラメーター

    • startdate: 必須。開始日。 DATE、DATETIME、または STRING 型の値がサポートされています。

      STRING 型の値を指定した場合、計算前に値は暗黙的に DATE 型の値に変換されます。値は 'yyyy-mm-dd' 形式である必要があります。例: '2019-12-27'

    • delta: 必須。加算または減算する日数。このパラメーターの値は BIGINT 型である必要があります。delta の値が 0 より大きい場合、開始日から指定日数が減算されます。delta の値が 0 未満の場合、開始日に指定日数が加算されます。delta の値が 0 の場合、日付値は変更されません。

  • 戻り値

    DATE 型の値が返されます。戻り値は yyyy-mm-dd フォーマットです。戻り値は、次のルールに基づいて異なります。

    • startdate の値が DATE、DATETIME、または STRING 型でない場合は、エラーが返されます。

    • startdate の値が null の場合は、エラーが返されます。

    • delta の値が null の場合は、null が返されます。

  • -- 戻り値は 2005-02-28 です。 1 日が減算されます。 2 月の末日が返されます。
    select date_sub(datetime '2005-03-01 00:00:00', 1);
    
    -- 戻り値は 2005-03-01 です。 1 日が加算されます。
    select date_sub(date '2005-02-28', -1);
    
    -- 戻り値は 2005-02-27 です。 2 日が減算されます。
    select date_sub('2005-03-01 00:0000', 2);
    
    -- 現在の時刻が 2021-09-10 16:31:44 の場合、戻り値は 2021-09-09 です。
    select date_sub(getdate(),1);
    
    -- 戻り値は null です。
    select date_sub('2005-03-01 00:00:00', null);

DAY

  • 構文

    int day(datetime|timestamp|date|string <date>)
  • 説明

    日付値が属する日を返します。

  • パラメーター

    date: 必須。DATETIME、TIMESTAMP、DATE、または STRING 型の日付値。yyyy-mm-ddyyyy-mm-dd hh:mi:ss、または yyyy-mm-dd hh:mi:ss:ff3 フォーマットの入力値です。値が STRING 型の場合、値には少なくとも yyyy-mm-dd の部分が含まれており、余分な文字列を含めてはいけません。

  • 戻り値

    INT 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • date の値が DATETIME、TIMESTAMP、DATE、または STRING 型でない場合、または形式が要件を満たしていない場合は、null が返されます。

    • date の値が null の場合は、null が返されます。

  • -- 戻り値は 1 です。
    select day('2014-09-01');
    
    -- 戻り値は null です。
    select day('20140901');
    
    
    -- 戻り値は null です。
    select day(null);

DAYOFMONTH

  • 構文

    int dayofmonth(datetime|timestamp|date|string <date>)
  • 説明

    日付値の日を返します。

  • パラメーター

    date: 必須。DATETIME、TIMESTAMP、DATE、または STRING 型の日付値。yyyy-mm-ddyyyy-mm-dd hh:mi:ss、または yyyy-mm-dd hh:mi:ss:ff3 形式の入力値です。値が STRING 型の場合は、値には少なくとも yyyy-mm-dd の部分が含まれており、余分な文字列を含めてはなりません。

  • 戻り値

    INT 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • date の値が DATETIME、TIMESTAMP、DATE、または STRING 型でない場合、または形式が要件を満たしていない場合は、null が返されます。

    • date の値が null の場合は、null が返されます。

  • -- 戻り値は 1 です。
    select dayofmonth('2014-09-01');
    
    -- 戻り値は null です。
    select dayofmonth('20140901');
    
    -- 戻り値は null です。
    select dayofmonth(null);

DAYOFWEEK

  • 構文

    int dayofweek(datetime|timestamp|date|string <date>)
  • 説明

    日付値が属する曜日を返します。

  • パラメーター

    日付: 必須。DATETIME、TIMESTAMP、DATE、または STRING 型の日付値。yyyy-mm-ddyyyy-mm-dd hh:mi:ss、または yyyy-mm-dd hh:mi:ss:ff3 形式の入力値。値が STRING 型の場合は、少なくとも yyyy-mm-dd の部分が含まれており、余分な文字列を含めてはいけません。

  • 戻り値

    INT 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • date の値が DATETIME、TIMESTAMP、DATE、または STRING 型でない場合、または形式が要件を満たしていない場合は、null が返されます。

    • date の値が null の場合は、null が返されます。

    • 戻り値の範囲は 1 ~ 7 です。値 1 は日曜日、値 2 は月曜日を示します。他の値にも同じルールが適用されます。

  • -- 戻り値は 5 で、木曜日を示します。
    SELECT dayofweek('2009-07-30');

DAYOFYEAR

  • 構文

    int dayofyear(datetime|timestamp|date|string <date>)
  • 説明

    年の通算日を表す整数を返します。

  • パラメーター

    日付: 必須。 DATETIME、TIMESTAMP、DATE、または STRING 型の日付値。入力値は、yyyy-mm-ddyyyy-mm-dd hh:mi:ss、または yyyy-mm-dd hh:mi:ss:ff3 フォーマットです。値が STRING 型の場合、値には少なくとも yyyy-mm-dd の部分が含まれており、余分な文字列を含めてはなりません。

  • 戻り値

    INT 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • date の値が DATETIME、TIMESTAMP、DATE、または STRING 型でない場合、または形式が要件を満たしていない場合は、null が返されます。

    • date の値が null の場合は、null が返されます。

  • -- 戻り値は 100 です。
    SELECT dayofyear('2016-04-09');

EXTRACT

  • 構文

    int extract(<datepart> from date|datetime|timestamp <date>)
  • 説明

    date で指定された日付値から、datepart で指定された日付構成要素を抽出します。

  • パラメーター

    • datepart: 必須。 YEAR、MONTH、DAY、HOUR、または MINUTE に設定できる値。

    • 日付: 必須。 DATE、DATETIME、TIMESTAMP、または STRING 型の日付値。値は yyyy-mm-ddyyyy-mm-dd hh:mi:ss、または yyyy-mm-dd hh:mi:ss.ff3 フォーマットです。値が STRING 型の場合、値には少なくとも yyyy-mm-dd の部分が含まれている必要があり、余分な文字列を含めることはできません。

  • 戻り値

    INT 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • datepart の値が YEAR、MONTH、DAY、HOUR、または MINUTE でない場合は、エラーが返されます。

    • datepart の値が null の場合は、エラーが返されます。

    • date の値が DATE、DATETIME、TIMESTAMP、または STRING 型でない場合、または null の場合は、null が返されます。

  • select  extract(year from '2019-05-01 11:21:00') year
             ,extract(month from '2019-05-01 11:21:00') month
             ,extract(day from '2019-05-01 11:21:00') day
             ,extract(hour from '2019-05-01 11:21:00') hour
             ,extract(minute from '2019-05-01 11:21:00') minute;
    -- 次の結果が返されます。
    +------+-------+------+------+--------+
    | year | month | day  | hour | minute |
    +------+-------+------+------+--------+
    | 2019 | 5     | 1    | 11   | 21     |
    +------+-------+------+------+--------+
    -- 戻り値は null です。
    select  extract(year from null);

FROM_UNIXTIME

  • 構文

    datetime from_unixtime(bigint <unixtime>)
  • 説明

    BIGINT 型の unixtime の値を DATETIME 型の日付値に変換します。

  • パラメーター

    unixtime: 必須。 UNIX 形式の BIGINT 型の日付値。値は秒単位まで正確です。入力値が STRING、DOUBLE、または DECIMAL 型の場合、計算前に値が暗黙的に BIGINT 型の値に変換されます。

  • 戻り値

    DATETIME 型の値が返されます。戻り値は、yyyy-mm-dd hh:mi:ss フォーマットです。unixtime の値が null の場合、null が返されます。

    説明

    set odps.sql.hive.compatible=true; が実行される Hive 互換データ型エディションでは、入力値が STRING 型の場合、STRING 型の値が返されます。

  • -- 戻り値は 1973-11-30 05:33:09 です。
    select from_unixtime(123456789);

GETDATE

  • 構文

    datetime getdate()
  • 説明

    現在のシステム時刻を返します。SQL分析機能では、UTC + 08:00 が標準タイムゾーンとして使用されます。

  • 戻り値

    現在の日付と時刻が返されます。これらは DATETIME 型です。

HOUR

  • 構文

    int hour(datetime|timestamp|string <date>)
  • 説明

    日付値の「時」の構成要素を返します。

  • パラメーター

    date: 必須。DATETIME 型、TIMESTAMP 型、または STRING 型の日付値。yyyy-mm-dd hh:mi:ss または yyyy-mm-dd hh:mi:ss.ff3 形式の日付値です。値が STRING 型の場合、値には少なくとも yyyy-mm-dd の部分が含まれている必要があり、余分な文字列を含めてはいけません。

  • 戻り値

    INT 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • date の値が DATETIME、TIMESTAMP、または STRING 型でない場合、または形式が要件を満たしていない場合は、null が返されます。

    • date の値が null の場合は、null が返されます。

  • -- 戻り値は 12 です。
    select hour('2014-09-01 12:00:00');
    
    -- 戻り値は 12 です。
    select hour('12:00:00');
    
    -- 戻り値は null です。
    select hour('20140901120000');
    
    -- 戻り値は null です。
    select hour(null);

INTERVAL_DAY_TIME

  • 構文

    interval_day_time(string <date>)
  • 説明

    date の値を INTERVAL_DAY_TIME 型の変数に変換します。

  • パラメーター

    日付: 必須。STRING 型の日付値。dd hh:mi:ss.ff3 フォーマットの入力値で、少なくとも dd hh:mm の部分は必須です。指定されていない場合、エラーが返されます。

  • 戻り値

    INTERVAL_DAY_TIME 型の値が返されます。入力値が null の場合は、null が返されます。

  • -- 戻り値は 1 00:00:00.000000000 です。
    select interval_day_time("01 00:00:00");
    
    -- 戻り値は 1 11:22:00.000000000 です。
    select interval_day_time("01 11:22");
    
    -- 戻り値は 12 01:02:03.999000000 です。
    select interval_day_time("12 01:02:03.999");

ISDATE

  • 構文

    boolean isdate(string <date>, string <format>)
  • 説明

    日付文字列を指定された形式の日付値に変換できるかどうかを判断します。日付文字列を指定された形式の日付値に変換できる場合は、true が返されます。そうでない場合は、false が返されます。

  • パラメーター

    • date: 必須。 STRING 型の値。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に値が暗黙的に STRING 型の値に変換されます。

    • 形式: 必須。STRING 型の定数です。このパラメーターは EDTF をサポートしていません。形式に冗長な形式文字列が存在する場合、この関数は最初の形式文字列に対応する日付文字列を日付値に変換します。他の文字列はデリミタと見なされます。たとえば、isdate("1234-yyyy", "yyyy-yyyy") は true を返します。

  • 戻り値

    BOOLEAN 型の値が返されます。date または format の値が null の場合は、null が返されます。

  • -- 戻り値は true です。
    select isdate('2021-10-11','yyyy-mm-dd');
    
    -- 戻り値は false です。
    select isdate(1678952314,'yyyy-mm-dd');

LAST_DAY

  • 構文

    string last_day(date|datetime|timestamp|string <date>)
  • 説明

    日付値が属する月の末日を返します。

  • パラメーター

    日付: 必須。 DATE、DATETIME、TIMESTAMP、または STRING 型の日付値です。値が STRING 型の場合は、少なくとも yyyy-mm-dd 部分を含み、余分な文字列を含めることはできません。

  • 戻り値

    STRING 型の値が返されます。戻り値は yyyy-mm-dd フォーマットです。戻り値は、次のルールに基づいて異なります。

    • date の値が DATE、DATETIME、TIMESTAMP、または STRING 型でない場合、または形式が要件を満たしていない場合は、null が返されます。

    • date の値が null の場合は、エラーが返されます。

  • -- 戻り値は 2017-03-31 です。
    select last_day('2017-03-04');
    
    -- 戻り値は 2017-07-31 です。
    select last_day('2017-07-04 11:40:00');
    
    -- 戻り値は null です。
    select last_day('20170304');

LASTDAY

  • 構文

    datetime lastday(datetime <date>)
  • 説明

    日付 値が含まれる月の最終日を返します。日コンポーネントのみが切り捨てられます。時、分、秒のコンポーネントは 00:00:00 として表現されます。

  • パラメーター

    date: yyyy-mm-dd hh:mi:ss フォーマットの DATETIME 型の日付値です。

  • 戻り値

    DATETIME 型の値が返されます。戻り値は yyyy-mm-dd hh:mi:ss フォーマットです。戻り値は、次のルールに基づいて異なります。

    • date の値が DATETIME または STRING 型でない場合、または形式が要件を満たしていない場合は、エラーが返されます。

    • date の値が null の場合は、null が返されます。

  • -- 戻り値は 2013-06-30 00:00:00 です。
    select lastday (datetime '2013-06-08 01:10:00');
    
    -- 戻り値は 2013-06-30 00:00:00 です。
    select lastday ('2013-06-08 01:10:00');
    
    -- 戻り値は null です。
    select lastday (null);

MINUTE

  • 構文

    int minute(datetime|timestamp|string <date>)
  • 説明

    日付値の「分」の構成要素を返します。

  • パラメーター

    date: 必須。DATETIME型、TIMESTAMP型、またはSTRING型の値です。yyyy-mm-dd hh:mi:ss または yyyy-mm-dd hh:mi:ss.ff3 フォーマットの日付値です。

  • 戻り値

    INT 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • date の値が DATETIME、TIMESTAMP、または STRING 型でない場合、または形式が要件を満たしていない場合は、null が返されます。

    • date の値が null の場合は、null が返されます。

  • -- 戻り値は 30 です。
    select minute('2014-09-01 12:30:00'); 
    
    -- 戻り値は 30 です。
    select minute('12:30:00');
    
    -- 戻り値は null です。
    select minute('20140901120000');
    
    -- 戻り値は null です。
    select minute(null);

MONTH

  • 構文

    int month(datetime|timestamp|date|string <date>)
  • 説明

    日付値が属する月を返します。

  • パラメーター

    日付: 必須。 DATETIME、TIMESTAMP、DATE、または STRING 型の日付値。入力値は、yyyy-mm-ddyyyy-mm-dd hh:mi:ss、または yyyy-mm-dd hh:mi:ss:ff3 形式です。値が STRING 型の場合、値には少なくとも yyyy-mm-dd 部分が含まれている必要があり、余分な文字列を含めてはなりません。

  • 戻り値

    INT 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • date の値が DATETIME、TIMESTAMP、DATE、または STRING 型でない場合、または形式が要件を満たしていない場合は、null が返されます。

    • date の値が null の場合は、null が返されます。

  • -- 戻り値は 9 です。
    select month('2014-09-01');
    
    -- 戻り値は null です。
    select month('20140901');
    
    -- 戻り値は null です。
    select month(null);

MONTHS_BETWEEN

  • 構文

    double months_between(datetime|timestamp|date|string <date1>, datetime|timestamp|date|string <date2>)
  • 説明

    date1date2 の間の月数を返します。

  • パラメーター

    date1date2: 必須。DATETIME型、TIMESTAMP型、DATE型、または STRING型の値。入力値は yyyy-mm-ddyyyy-mm-dd hh:mi:ssyyyy-mm-dd hh:mi:ss.ff3 形式です。入力値が STRING型の場合、値には少なくとも yyyy-mm-dd の部分が含まれていなければならず、余分な文字列を含めてはいけません。

  • 戻り値

    DOUBLE 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • date1 の値が date2 の値より後の場合は、正の値が返されます。date2 の値が date1 の値より後の場合は、負の値が返されます。

    • date1date2 の値が 2 つの月の末日に対応する場合は、月数を表す整数が返されます。そうでない場合は、戻り値は次の式を使用して計算されます。(date1 - date2)/31。

    • date1 または date2 の値が null の場合は、null が返されます。

  • -- 戻り値は 3.9495967741935485 です。
    select months_between('1997-02-28 10:30:00', '1996-10-30');
    
    -- 戻り値は -3.9495967741935485 です。
    select months_between('1996-10-30','1997-02-28 10:30:00' );
    
    -- 戻り値は -3.0 です。
    select months_between('1996-09-30','1996-12-31');
    
    -- 戻り値は null です。
    select months_between('1996-09-30',null);

NEXT_DAY

  • 構文

    string next_day(timestamp|date|datetime|string <startdate>, string <week>)
  • 説明

    startdate の値より後で、week の値に一致する最初の日付を返します。翌週の指定された曜日の日付が返されます。

  • パラメーター

    • startdate: 必須。 TIMESTAMP、DATE、DATETIME、または STRING 型の値。yyyy-mm-ddyyyy-mm-dd hh:mi:ss、または yyyy-mm-dd hh:mi:ss.ff3 形式の入力値です。値が STRING 型の場合、値には少なくとも yyyy-mm-dd 部分が含まれている必要があり、余分な文字列を含めることはできません。

    • week: 必須。 STRING 型の値。曜日の最初の 2 文字または 3 文字、あるいは完全な名前を指定できます (MO、TUE、FRIDAY など)。

  • 戻り値

    STRING 型の値が返されます。戻り値は yyyy-mm-dd フォーマットです。戻り値は、次のルールに基づいて異なります。

    • date の値が TIMESTAMP、DATE、DATETIME、または STRING 型でない場合、または形式が要件を満たしていない場合は、null が返されます。

    • date の値が null の場合は、エラーが返されます。

    • week の値が null の場合は、null が返されます。

  • -- 戻り値は 2017-08-08 です。
    select next_day('2017-08-01','TU');
    
    -- 戻り値は 2017-08-08 です。
    select next_day('2017-08-01 23:34:00','TU');
    
    -- 戻り値は null です。
    select next_day('20170801','TU');
    
    -- 戻り値は null です。
    select next_day('2017-08-01 23:34:00',null);

NOW

  • 構文

    datetime NOW()
  • 説明

    NOW 関数について説明するために、トピックが追加されました。この関数は、現在のシステム日付と時刻を返すために呼び出されます。

  • 戻り値

    DATETIME 型の値が返されます。戻り値の形式は yyyy-mm-dd hh:mi:ss.SSS です。

    • 形式が指定されていません。戻り値のミリ秒部分は、1 ビット、2 ビット、または 3 ビットで構成される場合があります。

      select now();

      戻り値の例:

      +------+
      | _c0  |
      +------+
      | 2023-06-13 10:53:24.967 |
      +------+
    • 時刻形式が指定されています。

      select  date_format(now(),'yyyy-MM-dd hh:mm:ss.SSS') ;

      次の表は、関数によって返される結果の列について説明しています。

      +-----+
      | _c0 |
      +-----+
      | 2023-06-13 10:53:53.899 |
      +-----+

QUARTER

  • 構文

    int quarter (datetime|timestamp|date|string <date>)
  • 説明

    日付値が属する四半期を返します。有効な値: 1 ~ 4。

  • パラメーター

    日付: 必須。 DATETIME、TIMESTAMP、DATE、または STRING 型の日付値。入力値は、yyyy-mm-ddyyyy-mm-dd hh:mi:ss、または yyyy-mm-dd hh:mi:ss:ff3 形式です。値が STRING 型の場合、値には少なくとも yyyy-mm-dd 部分が含まれている必要があり、余分な文字列を含めることはできません。

  • 戻り値

    INT 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • date の値が DATETIME、TIMESTAMP、DATE、または STRING 型でない場合、または形式が要件を満たしていない場合は、null が返されます。

    • date の値が null の場合は、null が返されます。

  • -- 戻り値は 4 です。
    select quarter('1970-11-12 10:00:00');
    
    -- 戻り値は 4 です。
    select quarter('1970-11-12');
    
    -- 戻り値は null です。
    select quarter(null);

SECOND

  • 構文

    int second(datetime|timestamp|string <date>)
  • 説明

    日付値の「秒」の構成要素を返します。

  • パラメーター

    日付: 必須。 DATETIME、TIMESTAMP、または STRING 型の日付値。日付値は yyyy-mm-dd hh:mi:ss または yyyy-mm-dd hh:mi:ss.ff3 フォーマットです。

  • 戻り値

    INT 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • date の値が DATETIME、TIMESTAMP、または STRING 型でない場合、または形式が要件を満たしていない場合は、null が返されます。

    • date の値が null の場合は、null が返されます。

  • -- 戻り値は 45 です。
    select second('2014-09-01 12:30:45');
    
    -- 戻り値は 45 です。
    select second('12:30:45');
    
    -- 戻り値は null です。
    select second('20140901123045');
    
    -- 戻り値は null です。
    select second(null);

TO_CHAR

  • 構文

    string to_char(datetime <date>, string <format>)
  • 説明

    DATETIME 型の date の値を、指定された format の文字列に変換します。

  • パラメーター

    • 日付: 必須。 DATETIME 型の値。日付値は yyyy-mm-dd hh:mi:ss フォーマットです。入力値が STRING 型の場合、計算前に暗黙的に DATETIME 型の値に変換されます。

    • format: 必須。 STRING 型の定数。このパラメーターは日付形式を指定します。format パラメーターでは、日付形式の部分が関連データに置き換えられ、他の文字は出力で変更されません。

  • 戻り値

    STRING 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • date の値が DATETIME または STRING 型でない場合は、エラーが返されます。

    • date の値が null の場合は、エラーが返されます。

    • format の値が null の場合は、null が返されます。

  • -- 戻り値は 20080718 です。
    select to_char(datetime'2008-07-18 00:00:00', 'yyyymmdd');
    
    -- 戻り値は 20080718 です。
    select to_char('2008-07-18 00:00:00', 'yyyymmdd');
    
    -- 'Alibaba 2010-12*3' は標準の日付値に変換できないため、エラーが返されます。値は 'Alibaba 2010-12*03' と記述する必要があります。
    select to_char(datetime'Alibaba 2010-12*3', 'Alibaba yyyy-mm*dd');
    
    -- '20102401' は標準の DATETIME 値ではないため、エラーが返されます。値は '2010-01-24 00:00:00' と記述する必要があります。
    select to_char(datetime'20102401', 'yyyy');
    
    -- '2008718' は標準の DATETIME 値ではないため、エラーが返されます。値は '2008-07-18 00:00:00' と記述する必要があります。
    select to_char(datetime'2008718', 'yyyymmdd');
    
    -- 戻り値は null です。
    select to_char(datetime'2010-12-03 00:00:00', null);

TO_DATE

  • 構文

    datetime to_date(string <date>, string <format>)
  • 説明

    文字列を、指定された formatdate の値に変換します。

  • パラメーター

    • date: 必須。 STRING 型の値。このパラメーターは、変換する日付文字列を指定します。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME データ型の場合、計算前に値が暗黙的に STRING 型の値に変換されます。日付文字列は ISO 8601 形式にすることもできます。

    • format: 必須。 STRING 型の定数。このパラメーターは日付形式を指定します。format は EDTF をサポートしていません。他の文字は、解析中に無効な文字として省略されます。

      format の値には yyyy が含まれている必要があります。含まれていない場合、null が返されます。format に冗長なフォーマット文字列が存在する場合、この関数は最初のフォーマット文字列に対応する日付文字列を日付値に変換します。他の文字列はデリミタと見なされます。たとえば、to_date("1234-2234", "yyyy-yyyy")1234-01-01 00:00:00 を返します。

      フォーマットは、さまざまな日付コンポーネントで構成されています。yyyy は 4 桁の年を示します。mm は 2 桁の月を示します。dd は 2 桁の日を示します。hh は 24 時間制に基づく時間を示します。mi は 2 桁の分を示します。ss は 2 桁の秒を示します。ff3 は 3 桁のミリ秒を示します。

  • 戻り値

    DATETIME 型の値が返されます。戻り値は yyyy-mm-dd hh:mi:ss フォーマットです。date または format の値が null の場合、null が返されます。

  • -- 戻り値は 2010-12-03 00:00:00 です。
    select to_date('Alibaba 2010-12*03', 'Alibaba yyyy-mm*dd');
    
    -- 戻り値は 2008-07-18 00:00:00 です。
    select to_date('20080718', 'yyyymmdd');
    
    -- 戻り値は 2008-07-18 20:30:00 です。
    select to_date('200807182030','yyyymmddhhmi');
    
    -- '2008718' は標準の日付値に変換できないため、エラーが返されます。値は '20080718' と記述する必要があります。
    select to_date('2008718', 'yyyymmdd');
    
    --'Alibaba 2010-12*3' は標準の日付値に変換できないため、エラーが返されます。値は 'Alibaba 2010-12*03' と記述する必要があります。
    select to_date('Alibaba 2010-12*3', 'Alibaba yyyy-mm*dd');
    
    --'2010-24-01' は標準の日付値に変換できないため、エラーが返されます。値は '2010-01-24' と記述する必要があります。
    select to_date('2010-24-01', 'yyyy');
    
    -- 戻り値は 2018-10-30 15:13:12 です。
    select to_date('20181030 15-13-12.345','yyyymmdd hh-mi-ss.ff3');
    
    -- 戻り値は null です。
    select to_date(null,'yyyymmdd hh-mi-ss.ff3');
    
    -- 戻り値は null です。
    select to_date('20181030 15-13-12.345',null);
    
    -- 入力値が ISO 8601 形式の場合、戻り値は 2021-09-24 13:39:34 です。
    select to_date('2021-09-24T13:39:34.119Z', 'yyyy-MM-ddThh:mi:ss.ff3Z');

UNIX_TIMESTAMP

  • 構文

    bigint unix_timestamp(datetime|date|timestamp|string <date>)
  • 説明

    date の値を整数である UNIX タイムスタンプに変換します。

  • パラメーター

    日付: 必須。DATETIME型、DATE型、TIMESTAMP型、またはSTRING型の値。入力値は yyyy-mm-ddyyyy-mm-dd hh:mi:ss、または yyyy-mm-dd hh:mi:ss.ff3 フォーマットです。入力値がSTRING型の場合、計算前にDATETIME型の値に暗黙的に変換されます。MaxCompute V2.0 のデータ型エディションを有効にしている場合、暗黙的な変換は失敗します。この場合、CAST 関数 (例: unix_timestamp(cast(... as datetime))) を使用してデータ型を変換する必要があります。MaxCompute V2.0 のデータ型エディションを無効にすることもできます。

  • 戻り値

    BIGINT 型の UNIX タイムスタンプが返されます。戻り値は、次のルールに基づいて変化します。

    • date の値が DATETIME、DATE、TIMESTAMP、または STRING 型でない場合、または形式が要件を満たしていない場合は、エラーが返されます。

    • date の値が null の場合は、null が返されます。

  • -- 戻り値は 1237518660 です。
    select unix_timestamp(datetime'2009-03-20 11:11:00'); 
    
    -- 戻り値は 1237518660 です。
    select unix_timestamp('2009-03-20 11:11:00'); 
    
    -- 戻り値は null です。
    select unix_timestamp(null);

WEEKDAY

  • 構文

    bigint weekday (datetime <date>)
  • 説明

    date 値が属する曜日を表す数値を返します。

  • パラメーター

    日付: 必須。 DATETIME 型の値。日付値は yyyy-mm-dd hh:mi:ss フォーマットである必要があります。入力値が STRING 型の場合、計算前に暗黙的に DATETIME 型の値に変換されます。

  • 戻り値

    BIGINT 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • 月曜日は週の最初の日と見なされ、戻り値は 0 です。曜日は 0 から始まる昇順で番号が付けられます。日曜日の戻り値は 6 です。

    • date の値が DATETIME または STRING 型でない場合、または形式が要件を満たしていない場合は、エラーが返されます。

    • date の値が null の場合は、null が返されます。

  • -- 戻り値は 4 です。
    select weekday (datetime '2009-03-20 11:11:00');
    
    -- 戻り値は 4 です。
    select weekday ('2009-03-20 11:11:00');
    
    -- 戻り値は null です。
    select weekday (null);

WEEKOFYEAR

  • 構文

    bigint weekofyear (datetime <date>)
  • 説明

    日付値が属する年の週を表す number を返します。月曜日は週の最初の日と見なされます。

    説明

    週が現在の年に属するか翌年に属するかを判断するには、週の 4 日以上が属する年を探します。週が現在の年に属する場合は、その週は年の最後の週と見なされます。週が翌年に属する場合は、その週は翌年の最初の週と見なされます。

  • パラメーター

    日付: 必須。 DATETIME 型の値。日付値は yyyy-mm-dd hh:mi:ss フォーマットである必要があります。入力値が STRING 型の場合、計算前に暗黙的に DATETIME 型の値に変換されます。

  • 戻り値

    BIGINT 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • date の値が DATETIME または STRING 型でない場合、または形式が要件を満たしていない場合は、null が返されます。

    • date の値が null の場合は、null が返されます。

  • -- 戻り値は 1 です。 20141229 は 2014 年ですが、週の大部分の日が 2015 年に属します。この場合、戻り値 1 は 2015 年の最初の週を示します。
    select weekofyear(to_date("20141229", "yyyymmdd"));  
    
    -- 戻り値は 1 です。    
    select weekofyear(to_date("20141231", "yyyymmdd")); 
    
    -- 戻り値は 53 です。 
    select weekofyear(to_date("20151229", "yyyymmdd"));
    
    -- 戻り値は 48 です。
    select weekofyear('2021-11-29 00:01:00');
    
    -- 戻り値は null です。
    select weekofyear('20141231');
    
    -- 戻り値は null です。
    select weekofyear(null);

YEAR

  • 構文

    int year(datetime|timestamp|date|string <date>)
  • 説明

    date 値が属する年を返します。

  • パラメーター

    日付: 必須。 DATETIME、TIMESTAMP、DATE、または STRING 型の日付値。入力値は、yyyy-mm-ddyyyy-mm-dd hh:mi:ss、または yyyy-mm-dd hh:mi:ss:ff3 フォーマットです。値が STRING 型の場合、値には少なくとも yyyy-mm-dd の部分が含まれており、余分な文字列を含めてはいけません。

  • 戻り値

    INT 型の値が返されます。戻り値は、次のルールに基づいて変化します。

    • date の値が DATETIME、TIMESTAMP、DATE、または STRING 型でない場合、または形式が要件を満たしていない場合は、null が返されます。

    • date の値が null の場合は、null が返されます。

  • -- 戻り値は 1970 です。
    select year('1970-01-01 12:30:00');
    
    -- 戻り値は 1970 です。
    select year('1970-01-01');
    
    -- 戻り値は 70 です。
    select year('70-01-01');
    
    -- 戻り値は null です。
    select year('1970/03/09'); 
    
    -- 戻り値は null です。
    select year(null);