[ 
https://issues.apache.org/jira/browse/PHOENIX-688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14215416#comment-14215416
 ] 

Alicia Ying Shu commented on PHOENIX-688:
-----------------------------------------

1) Added some support for TO_TIMESTAMP(). If using pattern 'yyyy-MM-dd 
hh:mm:ss', it works. If using 'yyyy-MM-dd hh:mm:ss.nnnnnnnnn' got parse error 
from Java SimpleDateFormat because it expects a Date format. Should we consider 
using Joda time?

SELECT TO_TIMESTAMP('2003-12-13 10:13:18', 'yyyy-MM-dd hh:mm:ss') FROM 
TO_TIMESTAMP_TEST;
+-----------------------------+
| '2003-12-13 10:13:18.000.0' |
+-----------------------------+

SELECT TO_TIMESTAMP('2003-12-13 10:13:18', 'yyyy-MM-dd hh:mm:ss.nnnnnnnnn') 
FROM TO_TIMESTAMP_TEST;
java.lang.IllegalArgumentException: Illegal pattern character 'n'
        at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:845)
        at java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:659)
        at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:585)
        at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:560)
        at org.apache.phoenix.util.DateUtil$3.<init>(DateUtil.java:73)
        at org.apache.phoenix.util.DateUtil.getTimestampParser(DateUtil.java:73)
        at 
org.apache.phoenix.parse.ToTimestampParseNode.create(ToTimestampParseNode.java:47)
        at 
org.apache.phoenix.parse.ToTimestampParseNode.create(ToTimestampParseNode.java:32)
        at 
org.apache.phoenix.compile.ExpressionCompiler.visitLeave(ExpressionCompiler.java:300)
        at 
org.apache.phoenix.compile.ProjectionCompiler$SelectClauseVisitor.visitLeave(ProjectionCompiler.java:596)
        at 
org.apache.phoenix.compile.ProjectionCompiler$SelectClauseVisitor.visitLeave(ProjectionCompiler.java:497)
        at 
org.apache.phoenix.parse.FunctionParseNode.accept(FunctionParseNode.java:81)
        at 
org.apache.phoenix.compile.ProjectionCompiler.compile(ProjectionCompiler.java:361)
        at 
org.apache.phoenix.compile.QueryCompiler.compileSingleFlatQuery(QueryCompiler.java:400)
        at 
org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:357)
        at 
org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:142)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:311)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:294)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:215)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:211)
        at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
        at 
org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:210)
        at 
org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1040)
        at sqlline.SqlLine$Commands.execute(SqlLine.java:3673)
        at sqlline.SqlLine$Commands.sql(SqlLine.java:3584)
        at sqlline.SqlLine.dispatch(SqlLine.java:821)
        at sqlline.SqlLine.begin(SqlLine.java:699)
        at sqlline.SqlLine.mainWithInputRedirection(SqlLine.java:441)
        at sqlline.SqlLine.main(SqlLine.java:424)

> Add to_time and to_timestamp built-in functions
> -----------------------------------------------
>
>                 Key: PHOENIX-688
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-688
>             Project: Phoenix
>          Issue Type: Task
>    Affects Versions: 3.0-Release
>            Reporter: James Taylor
>            Assignee: Alicia Ying Shu
>
> We already have a to_date function implemented by ToDateFunction, so adding a 
> ToTimeFunction could be done by just deriving the class from ToDateFunction 
> and changing the getDataType() to be PDataType.TIME instead.
> For a general overview on adding a new built-in function, see the phoenix 
> blog 
> [here](http://phoenix-hbase.blogspot.com/2013/04/how-to-add-your-own-built-in-function.html)
> The to_timestamp function would be similar as well, but in this case we'd 
> want to register a new ToTimestampParseNode (very similar to 
> ToDateParseNode), that uses the DateUtil.getTimestampParser(format) to create 
> the timestamp instance. This class would then be defined in the 
> ToTimestampFunction as the nodeClass attribute (which would cause it to be 
> used to construct a ToTimestampFunction at compile time).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to