全部產品
Search
文件中心

Tablestore:SQL支援函數

更新時間:May 15, 2025

使用SELECT語句查詢分析儲存映射表所支援的函數,包括時序函數、時間函數、彙總函式、數學函數和字串函數等。

時序函數

函數

函數輸出類型

描述

time_bin(_time,interval)

Datetime

配合group by對時間進行分桶。例如group by time_bin(_time,"10s")表示對時間每十秒分為一個桶,結合彙總函式可以對桶中資料進行計算。

其中_time參數為時序時間列_time。interval參數為分桶的大小,類型為字串。interval參數可以指定為不同時間單位,可以使用縮寫。例如group by time_bin(_time,"10s")group by time_bin(_time,"30min")group by time_bin(_time,"1h")group by time_bin(_time,"1d")group by time_bin(_time,"10day")

tag_value_at(_tags,tag_key)

Varchar

返回時序標籤中指定key對應的value值。

_tags參數為時序標籤列_tags,tag_key參數為_tags中的key。

時間函數

重要

通過控制台使用時序分析儲存功能時,輸出的datetime類型值的時區為系統時區(中國為北京時間,即UTC+8)。通過SDK使用時序分析儲存功能時,輸出的datetime類型值的時區會被轉換為UTC時間,請根據業務需要進行時區轉換。本文以北京時間,即UTC+8時區為例介紹。

函數

函數輸出類型

描述

from_unixtime(unix_timestamp)

Datetime

將unix時間戳記轉換為Datetime類型並返回。unix時間戳記會進行時區轉化。例如from_unixtime(1447430881) 的傳回值為'2015-11-13 10:08:01'

其中unix_timestamp參數為秒層級的unix時間戳記。

from_unixtime(unix_timestamp,fsp)

Datetime

將unix時間戳記轉換為Datetime類型,round到fsp位元後返回。unix時間戳記會進行時區轉化。例如from_unixtime(1447430881.132216,3)的傳回值為'2015-11-14 00:08:01.132'

其中unix_timestamp參數為秒層級的unix時間戳記。fsp參數為精度,最大值為6,如果fsp的值大於6,則會拋出異常;如果fsp的值小於0,則不進行round。

from_unixtime_millis(unix_timestamp_millis)

Datetime

將unix時間戳記轉換為Datetime類型並返回。unix時間戳記會進行時區轉化。例如from_unixtime_millis(1447430881231)的傳回值為 '2015-11-14 00:08:01.231000'

其中unix_timestamp_millis參數為毫秒層級的unix時間戳記。

from_unixtime_micros(unix_timestamp_micros)

Datetime

將unix時間戳記轉換為Datetime類型並返回。unix時間戳記會進行時區轉化。例如from_unixtime_micros(1447430881231781)的傳回值為'2015-11-14 00:08:01.231781'

其中unix_timestamp_micros參數為微秒層級的unix時間戳記。

unix_timestamp()

Double

返回所在時區目前時間的秒層級unix時間戳記。

unix_timestamp_millis()

Double

返回所在時區目前時間毫秒級unix時間戳記。精度為秒。例如unix_timestamp_millis()的傳回值為1686299575000。

該函數等價於unix_timestamp() *1000

重要

該函數返回的時間戳記位元到毫秒,但精度為秒,而非毫秒。

unix_timestamp_millis(datetime)

Double

返回datetime所在時區的毫秒級unix時間戳記。

其中datetime參數為Datetime類型的時間。

unix_timestamp_millis(datestr)

Double

返回datestr所在時區對應日期的毫秒級unix時間戳記。例如unix_timestamp_millis("2023-06-09 16:23:31.000000")的傳回值為1686299011000.000000

其中datestr參數為時間字串,必須明確指定年月日。取值範圍為1970-01-01 00:00:01.000000 UTC到2038-01-19 03:14:07.999999UTC。

重要
  • 由於datestr參數必須指定年月日,如果輸入非法的datestr參數,例如select unix_timestamp_millis("2023-07"),則返回結果為null。

  • 如果設定的datestr參數值超出了取值範圍(1970-01-01 00:00:01.000000 UTC到2038-01-19 03:14:07.999999UTC),則返回結果為0。

unix_timestamp_micros()

Double

返回所在時區目前時間微秒級unix時間戳記。精度為秒。例如unix_timestamp_micros()的傳回值為1686299575000000。

該函數等價於unix_timestamp() *1000000

重要

該函數返回的時間戳記位元到微秒,但精度為秒,而非微秒。

unix_timestamp_micros(datetime)

Double

返回datetime所在時區的微秒級unix時間戳記。

其中datetime參數為Datetime類型的時間。

unix_timestamp_micros(datestr)

Double

返回datestr所在時區對應日期的微秒級unix時間戳記。例如unix_timestamp_micros("2023-06-09 16:23:31.000000")的傳回值為1686299011000000.000000

其中datestr參數為時間字串,必須明確指定年月日。取值範圍為1970-01-01 00:00:01.000000 UTC到2038-01-19 03:14:07.999999UTC。

重要
  • 由於datestr參數必須指定年月日,如果輸入非法的datestr參數,例如select unix_timestamp_micros("2023-07"),則返回結果為null。

  • 如果設定的datestr參數超出了取值範圍(1970-01-01 00:00:01.000000 UTC到2038-01-19 03:14:07.999999UTC),則返回結果為0。

timediff(expr1,expr2)

Time

計算expr1與expr2的差值。

其中expr參數的類型可以為Datetime類型、Time類型和字串類型。

addtime(expr1,expr2)

與expr1相同

計算expr1與expr2的和。

其中expr1參數的類型可以為Datetime類型和Time類型,expr2參數的類型只能為Time類型。

date(datetime)

Date

返回datetime的日期部分。

其中datetime參數為Datetime類型的時間。

hour(expr)

BigInt

返回expr的小時部分。

其中expr參數的類型可以為Datetime類型和Time類型。

minute(expr)

BigInt

返回expr的分鐘部分。

其中expr參數的類型可以為Datetime類型和Time類型。

second(expr)

BigInt

返回expr的秒部分。

其中expr參數的類型可以為Datetime類型和ime類型。

microsecond(expr)

BigInt

返回expr的微秒部分。

其中expr參數的類型可以為Datetime類型和Time類型。

month(expr)

BigInt

返回expr的月份部分。

其中expr參數的類型可以為Datetime類型和Date類型。

year(expr)

BigInt

返回expr的年部分。

其中expr參數的類型可以為Datetime類型和Date類型。

week(expr)

BigInt

返回expr日期是本年的第幾周。

其中expr參數的類型可以為Datetime類型和Date類型。

week(expr,mode)

BigInt

返回expr日期根據指定mode計算是本年的第幾周。

其中expr參數的類型可以為Datetime類型和Date類型。mode參數取值範圍如下所示(相容MySQL)。

image.png

weekday(expr)

BigInt

返回一個日期的星期索引值。傳回值為0表示星期一,1表示星期二,以此類推,6表示星期日。

其中expr參數可以為Datetime類型和Date類型。

weekofyear(expr)

BigInt

返回一個日期所在的周數。其取值範圍為1到53。WEEKOFYEAR等價於WEEK(date,3),

expr參數的類型可以為datetime類型和date類型。

dayofmonth(expr)

BigInt

函數返回一個日期的日份。傳回值的範圍為1到31。

其中expr參數的類型可以為Datetime類型和Date類型。

dayofweek(expr)

BigInt

返回一個日期的星期索引值。傳回值為1表示星期日,2表示星期一,以此類推,7表示星期六。

其中expr參數的類型可以為Datetime類型和Date類型。

dayofyear(expr)

BigInt

返回一個日期在當年中的第幾天。傳回值的範圍為1到366。

其中expr參數的類型可以為Datetime類型和Date類型。

monthname(expr)

Varchar

返回expr日期的月份全名。

其中expr參數的類型可以為Datetime類型和Date類型。

dayname(expr)

Varchar

返回expr日期在星期中的全名。

其中expr參數的類型可以為Datetime類型和Date類型。

彙總函式

函數

函數輸出類型

描述

count(expr)

Bigint

返回SELECT語句檢索的行中非NULL值的數量。結果為一個Bigint值。

sum(expr)

傳回型別與expr類型一致

返回expr欄位的和。

如果查詢結果為空白,則返回NULL。

avg(expr)

Double

返回expr欄位的平均值。

如果查詢結果為空白,則返回NULL。

min(expr)

傳回型別與expr類型一致

返回expr欄位的最小值。

如果expr為字串,則輸出為字典序最小字串。

max(expr)

傳回型別與expr類型一致

返回expr欄位的最大值。

如果expr為字串,則輸出為字典序最大字串

max_by(expr1,expr2)

傳回型別與expr1類型一致

返回與expr2最大值關聯的expr1的值,即expr2最大值所在行expr1的值。

當expr2所關聯的expr1為NULL時,輸出NULL。expr1與expr2均可為字串。

min_by(expr1,expr2)

傳回型別與expr1類型一致

返回與expr2最小值關聯的expr1的值,即expr2最小值所在行expr1的值。

當expr2所關聯的expr1為NULL時,輸出NULL。expr1與expr2均可為字串。

bit_and(expr)

Bigint

返回expr欄位進行按位與運算的結果。

如果查詢結果為空白,則返回所有位均為1的64位整數。

bit_or(expr)

Bigint

返回expr欄位進行按位或運算的結果。

如果查詢結果為空白,則返回所有位均為0的64位整數。

bit_xor(expr)

Bigint

返回expr欄位進行按位異或運算的結果。

如果查詢結果為空白,則返回所有位均為0的64位整數。

std(expr)

Double

返回expr欄位的總體標準差。std、stddev和stddev_pop為三個同名函數,三者等價。

如果查詢結果為空白,則返回NULL。

stddev(expr)

Double

stddev_pop(expr)

Double

stddev_samp(expr)

Double

返回expr欄位的樣本標準差。

如果查詢結果為空白,則返回NULL。

var_pop(expr)

Double

返回expr欄位的總體方差。

var_pop和variance為兩個同名函數,兩者等價。

如果查詢結果為空白,則返回NULL。

variance(expr)

Double

var_samp(expr)

Double

返回expr欄位的樣本方差。

如果查詢結果為空白,則返回NULL。

數學函數

函數

函數輸出類型

描述

mod(x,y)

和x類型相同

返回x除以y的餘數。

如果y為0,則返回0。

abs(x)

和x類型相同

返回x的絕對值。

ceil(x)

和x類型相同

返回不小於x的最小整數值,即向上取整。

floor(x)

和x類型相同

返回不大於x的最大整數值,即向下取整。

round(x)

和x類型相同

返回x四捨五入後的整數值。

round(x,y)

和x類型相同

返回x四捨五入到小數點後y位的值。

acos(x)

Double

返回x的反餘弦值,即cos(y)=x時,y的值。

如果x的取值不在-1到1的範圍內,則返回NULL。

asin(x)

Double

返回x的反正弦值,即sin(y)=x時,y的值。

如果x的取值不在-1到1的範圍內,則返回NULL。

atan(x)

Double

返回x的反正切值,即tan(y)=x時,y的值。

atan2(x,y)

Double

返回兩個變數x和y的反正切,這與計算y/x的反正切類似,只是兩個參數的符號都用於確定結果的象限。

cos(x)

Double

返回x的餘弦值。x值以radians格式表示。

sin(x)

Double

返回x的正弦值。x值以radians格式表示。

tan(x)

Double

返回x的正切值。x值以radians格式表示。

exp(x)

Double

返回e(自然對數的基數)的x次方的值。

pow(x,y)

Double

返回x的y次方的值。

radians(x)

Double

返回從度數轉換為弧度的參數x。

重要

π弧度等於180度。

sqrt(x)

Double

返回x的平方根。

sign(x)

Bigint

根據x為負數、零或者正數,將參數的符號返回為-1、0或1。

pi()

Double

返回Pi值,即圓周率π的值。

ln(x)

Double

返回x的自然對數,即x以e為底的對數。

如果x小於或等於0,則返回NULL。

log2(x)

Double

返回x以2為底的對數。

如果x小於或等於0.0E0,則返回NULL。

log10(x)

Double

返回x以10為底的對數。

如果x小於或等於0.0E0,則返回NULL。

字串函數

函數

函數輸出類型

描述

length(str)

Bigint

返回字串以位元組計算的長度。

concat(str1,str2...)

Varchar

返回字串合并的結果。支援輸入多個字串。

to_base64(str)

Varchar

返回對str進行base64編碼後的字串。

hex(str)

Bigint

返回str的十六進位字串表示,其中str中每個字元的每個位元組均轉換為兩個十六進位數字。

hex(str)

Varchar

返回x的十六進位字串表示。例如hex(255)的傳回值為'FF'

instr(str1,substr)

Bigint

返回substr在字串str中首次出現的位置。

lower(str)

Varchar

返回str的小寫。

ltrim(str)

Varchar

返回str去除頭部空格後的字串。

lpad(str,len,padstr)

Varchar

用padstr在str的左側填充,將其長度填充為len,返回這個填充後的字串。

如果str的長度大於len值,則傳回值會被截斷為len個字元。例如lpad("aa",3,"0")的傳回值為"0aa"lpad("aa",1,"0")的傳回值為 "a"

rtrim(str)

Varchar

返回str去除尾部空格後的字串。

rpad(str,len,padstr)

Varchar

用padstr在str的右側填充,將其長度填充為len,返回這個填充後的字串。

如果str的值大於len的值,則傳回值會被截斷為len個字元。

trim(str,len,padstr)

Varchar

返回str去除頭部和尾部空格後的字串。

substr(str,pos1,pos2)

Varchar

從str第pos1個字元開始,截取之後pos2個字元作為返回的字串。

如果函數中未設定pos2參數,則從第pos1個字元開始截取之後所有字元作為返回的字串。

replace(str,from_str,to_str)

Varchar

返回將str中所有的from_str替換為to_str後的字串。在搜尋from_str時會區分大小寫。

reverse(str)

Varchar

返回str反轉後的結果。

upper(str)

Varchar

返回str的大寫。