diff --git a/be/src/exprs/timestamp_functions.cpp b/be/src/exprs/timestamp_functions.cpp index 4828ed8290..17174d6312 100644 --- a/be/src/exprs/timestamp_functions.cpp +++ b/be/src/exprs/timestamp_functions.cpp @@ -243,6 +243,18 @@ DateTimeVal TimestampFunctions::curtime(FunctionContext* context) { return return_val; } +DateTimeVal TimestampFunctions::utc_timestamp(FunctionContext* context) { + TimeInterval interval; + // TODO(liuhy): we only support Beijing Timezone, so minus 28800 + interval.second = -28800; + DateTimeValue dtv = *(context->impl()->state()->now()); + dtv.date_add_interval(interval, SECOND); + + DateTimeVal return_val; + dtv.to_datetime_val(&return_val); + return return_val; +} + DateTimeVal TimestampFunctions::to_date( FunctionContext* ctx, const DateTimeVal& ts_val) { if (ts_val.is_null) { diff --git a/be/src/exprs/timestamp_functions.h b/be/src/exprs/timestamp_functions.h index 6ed95fb667..c14edfe1e7 100644 --- a/be/src/exprs/timestamp_functions.h +++ b/be/src/exprs/timestamp_functions.h @@ -78,6 +78,7 @@ public: // Date/time functions. static doris_udf::DateTimeVal now(doris_udf::FunctionContext* context); static doris_udf::DateTimeVal curtime(doris_udf::FunctionContext* context); + static doris_udf::DateTimeVal utc_timestamp(doris_udf::FunctionContext* context); static doris_udf::DateTimeVal to_date( doris_udf::FunctionContext* ctx, const doris_udf::DateTimeVal& ts_val); static doris_udf::IntVal date_diff( diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.md new file mode 100644 index 0000000000..a93ed98a13 --- /dev/null +++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.md @@ -0,0 +1,24 @@ +# utc_timestamp + +## Syntax + +`DATETIME UTC_TIMESTAMP()` + +## Description + +返回当前UTC日期和时间在 "YYYY-MM-DD HH:MM:SS" 或 + +"YYYYMMDDHHMMSS"格式的一个值 + +根据该函数是否用在字符串或数字语境中 + +## Examples + +``` +mysql> select utc_timestamp(),utc_timestamp() + 1; ++---------------------+---------------------+ +| utc_timestamp() | utc_timestamp() + 1 | ++---------------------+---------------------+ +| 2019-07-10 12:31:18 | 20190710123119 | ++---------------------+---------------------+ +``` \ No newline at end of file diff --git a/gensrc/script/doris_builtins_functions.py b/gensrc/script/doris_builtins_functions.py index 9db110b2de..df8b641760 100755 --- a/gensrc/script/doris_builtins_functions.py +++ b/gensrc/script/doris_builtins_functions.py @@ -112,6 +112,8 @@ visible_functions = [ '_ZN5doris18TimestampFunctions3nowEPN9doris_udf15FunctionContextE'], [['curtime', 'current_time'], 'DATETIME', [], '_ZN5doris18TimestampFunctions7curtimeEPN9doris_udf15FunctionContextE'], + [['utc_timestamp'], 'DATETIME', [], + '_ZN5doris18TimestampFunctions13utc_timestampEPN9doris_udf15FunctionContextE'], [['timestamp'], 'DATETIME', ['DATETIME'], '_ZN5doris18TimestampFunctions9timestampEPN9doris_udf15FunctionContextERKNS1_11DateTimeValE'],