日期列,它是Cassandra ..中的文本类型,所以我需要UDF将文本转换为时间戳,以便可以在该列上查询

时间:2018-12-21 04:36:30

标签: cassandra cassandra-2.0 cassandra-3.0 cassandra-2.1

我已经写了类似belo的代码,但出现如下错误:-

  

InvalidRequest:来自服务器的错误:code = 2200 [Invalid query] message =“ Java源代码编译失败:第1行:java.util.String无法解析为类型第1行:令牌“ Date”的语法错误,@预期的第4行:SimpleDateFormat无法解析为类型

 CREATE FUNCTION saumya.text2dt ( input text )
 RETURNS NULL ON NULL INPUT
 RETURNS timestamp 
 LANGUAGE java
 AS $$
java.text.ParseException
java.text.SimpleDateFormat
java.util.Date
String ms = input;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd   HH:mm:ss.SSS");
Date date = sdf.parse(ms);
return sdf.format(date);        
$$

1 个答案:

答案 0 :(得分:1)

创建UDF语法:

 CREATE FUNCTION text2dt ( input text )
 RETURNS NULL ON NULL INPUT
 RETURNS timestamp 
 LANGUAGE java
 AS '
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd   HH:mm:ss.SSS");
try{
java.util.Date date = sdf.parse(input);
return date;  
}catch(Exception e){
return null;
}      
';