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
參考文檔: