Hi,

I have a question regarding filters on timestamps. The syntax seems to be 
UNIX_TIMESTAMP('yyyy-MM-dd hh:mm:ss'), is there another way to express a 
datetime type? The problem is that I get an exception when using the IN <list> 
syntax, while the equal comparison works without problems.

Example: SELECT * FROM  table1 WHERE datecol IN ( UNIX_TIMESTAMP('2009-01-05 
00:00:00'),UNIX_TIMESTAMP('2009-01-10 00:00:00')  )

Throws exception:

Caused by: java.sql.SQLException: Query returned non-zero code: 10014, cause: 
FAILED: SemanticException [Error 10014]: Line 5:21 Wrong arguments ''2009-01-10 
00:00:00'': The arguments for IN should be the same type! Types are: {timestamp 
IN (bigint, bigint)}
       at 
org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:189)
       at 
org.apache.hadoop.hive.jdbc.HiveStatement.execute(HiveStatement.java:127)
       at 
com.sap.connectivity.cs.java.drivers.jdbc.JDBCAPI$Statement.execute(JDBCAPI.java:1648)
       at 
com.sap.connectivity.cs.java.drivers.jdbc.JDBCDriver.prepare(JDBCDriver.java:1760)
       ... 15 more

Following query works:

SELECT * FROM  table1 WHERE datecol  =  UNIX_TIMESTAMP('2009-01-17 00:00:00')

Is there another syntax for datetime types? Could it be a bug in the filter "IN 
<list>" operation?

Thanks in advance,

Steffen

Reply via email to