Spark SQL 支持多种数据类型,并兼容Python、Scala等语言的数据类型。sql
整数系列:函数
小数系列:spa
日期和时间类型:unix
其余类型:code
复合类型:orm
Spark SQL一般使用字符串来表示Date和Timestamp类型的值,字符串要跟Date和Timestamp相互转换,在转换时,能够设置格式参数fmt,按照特定的格式来相互转换。blog
fmt是格式字符串,由相应的模式来指定格式:ci
1,表示Date或timestampelement
方法1:用字符串转换为Date或timestamp文档
date '1970-1-03' timestamp '1970-1-03 04:05:06.78'
方法2:把字符串按照特定的格式转换为Date或timestamp
to_date(date_str[,fmt]) to_timestamp(timestamp_str[,fmt])
方法2:用数字构造Date或timestamp
make_date(year,month,day) make_timestamp(year,month,day,hour,min,sec[,timezone])
2,把Date和timestamp转换为string
date_format(timestamp,fmt)
举个例子,把Date和timestamp按照特定的格式转换位字符串:
select date_format(date '1970-1-03', "yyyy-MM-dd"); --1970-01-03 select date_format(timestamp '1970-1-03 04:05:06.78', "yyyy-MM-dd HH:mm:ss.SS"); --1970-01-03 04:05:06.78
3,当前的Date和Timestamp
current_date() current_timestamp() now() -- current timestamp
4,提取Date和Timestamp的成分
field:是指year、month、day、hour、minute、second,
source:是指Date或Timestamp
date_part(field,source) year(date) month(date) day(date) hour(timestamp) minute(timestamp) second(timestamp)
5,unixtimestamp
unix timestamp是用数字来表示timestamp
unix_timestamp([timeExp[format]]) from_unixtime(unix_time,format) to_unix_timestamp(timeExp[,format])
6,Date和Timestamp操做
以day或month为单位来对Date和Timestamp进行操做:
add_months(start_date,num_months) months_between(timestamp1,timestamp2[,roundOff]) date_add(start_date,num_days) date_sub(start_date,num_days) datediff(endDate,startDate)
截断到特定的时间成分:
-- truncate timestamp date_trunc(fmt,ts) -- truncate date trunc(date,fmt)
7,UTC时间
from_utc_timestamp(timestamp,timezone) to_utc_timestamp(timestamp,timezone)
文本常量是指用文本表示一个固定不变的量,
1,16进制的字节序列
X { 'num [ ... ]' | "num [ ... ]" }
2,Date 和 Timestamp Literal
DATE 'yyyy-[m]m-[d]d[T]' TIMESTAMP 'yyyy-[m]m-[d]d[T][h]h:[m]m:[s]s.[ms][ms][ms][us][us][us][zone_id]'
Spark SQL也支持三值逻辑,任何两个值比较的结果是:True、False和Unknown,NULL表明Unknown(未知值)。
1,比较运算
NULL和任何值(包括NULL)进行比较,返回的都是NULL,为了比较NULL值,Spark提供了一个null-safe的“等于运算符” <=>,该运算符的运算逻辑是:
NULL <=> NULL,返回True
NULL <=> 任意非NULL, 返回False
2,逻辑运算符
Spark支持的逻辑运算符是AND, OR和 NOT
NOT NULL 返回NULL
NULL AND false 返回false,NULL AND true, NULL AND NULL都返回NULL
NULL OR true 返回true, NULL OR NULL,NULL OR false 都返回 NULL
3,判断NULL值的函数
ISNULL(null) 返回true
ISNAN(null) 返回false
参考文档: