一 时间函数
unix_timestamp(): 当前UNIX 系统时间,返回一个bigint类型的数字
unix_timestamp(stringdate):将一个字符串时间转化为bigint类型数字
to_date(stringtimestamp) 根据时间戳返回当前日期字符串啊;2.1之后返回一个Date对象
year(stringdate) year("1970-01-01") = 1970
quarter(date/timestamp/string)quarter('2015-04-08') = 2
month(stringdate) month("1970-11-01") = 11
day(stringdate) dayofmonth(date) :
day("1970-11-0100:00:00") = 1, day("1970-11-01") = 1
hour(stringdate):
hour('2009-07-3012:58:59') = 12, hour('12:58:59') = 12
minute(stringdate)
minute('2009-07-30 12:58:59') = 58
second(stringdate)
second('2009-07-30 12:58:59') = 59
weekofyear(stringdate) weekofyear("1970-11-01") = 44
datediff(stringenddate, string startdate):
date_add('2008-12-31',1) = '2009-01-01'
date_add(stringstartdate, int days):
date_add('2008-12-31',1) = '2009-01-01'
date_sub(stringstartdate, int days):
date_sub('2008-12-31',1) = '2008-12-30'
from_utc_timestamp(timestamp,string timezone):转换时区
from_utc_timestamp('1970-01-0108:00:00','PST') returns 1970-01-01 00:00:00
to_utc_timestamp(timestamp,string timezone):
to_utc_timestamp('1970-01-0100:00:00','PST') returns 1970-01-01 08:00:00.
current_date()返回当前日期
current_timestamp:返回当前时间戳
last_day(stringdate):返回日期该月的最后一天
months_between(date1, date2)计算两个日期之间的月份
date_format(date/timestamp/stringts, string fmt):日期格式化
date_format('2015-04-08','y') = '2015'
二 条件函数
if(booleantestCondition, T valueTrue, T valueFalseOrNull):
SELECTIF('1'=='2',TRUE,FALSE) result FROM dept;
isnull(a ) 返回TRUE或者FALSE
isnotnull( a ) 返回TRUE或者FALSE
nvl(Tvalue, T default_value) 如果值为空,返回默认值
COALESCE(Tv1, T v2, ...),如果不为空返回第一个,如果为空,返回空
CASEa WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
Whena = b, returns c; when a = d, returns e; else returns f.
CASEWHEN a THEN b [WHEN c THEN d]* [ELSE e] END
Whena = true, returns b; when c = true, returns d; else returns e.
三 String类型的函数
ascii(stringstr)
base64(binarybin)
concat(string|binaryA, string|binary B...)
initcap(stringA):首字母大写,其余小写,单词以空格分割
upper(stringA) :所有字符大写
lower(stringA):所有字符小写
trim(stringA):去空格
substring_index(stringA, string delim, int count):
从count个分割符delim,截取之前的数据
substring_index('www.apache.org','.', 2) = 'www.apache'
substr(string|binaryA, int start, int len) substring(string|binary A, int start, int len)
substr('foobar',4, 1) results in 'b'
substr(string|binaryA, int start) substring(string|binary A, int start)
substr('foobar',4) results in 'bar'
split(string str, string pat):接受一个正则表达式,返回一个数组
str_to_map(text[, delimiter1, delimiter2]):转换为map,第一个分隔符转换为KEY-VALUE;
第二个分隔符将KEY-VALUE转换为key和 value然后存如map,默认第一个是,第二个是=
reverse(string A);反转字符串
replace(string A,string OLD, string NEW):替换值
regexp_replace(stringINITIAL_STRING, string PATTERN, string REPLACEMENT):正则表达式替换
length(string A):返回字符串长度