在HSQL中获取字符串作为日期

时间:2013-04-22 15:13:36

标签: sql hsqldb

select * 
from employee 
having to_date(date, 'DD/MM/YYYY HH24:MI:SS') = to_date('01/01/2012 10:00:00', 'DD/MM/YYYY HH24:MI:SS')

列'date'是VARCHAR / STRING

由于to_date在HSQL中不起作用,如何使上述查询在HSQL中工作?

2 个答案:

答案 0 :(得分:1)

TO_DATE适用于最新版本的HSQLDB。您可以使用2.2.9版或未来版本。

但是您的查询错误,如a_horse_with_no_name的评论中所示,并且需要WHERE而不是HAVING。

select * 
from employee 
where to_date(date, 'DD/MM/YYYY HH24:MI:SS') = to_date('01/01/2012 10:00:00', 'DD/MM/YYYY HH24:MI:SS')

实际上你也可以简化查询

select * 
from employee 
where to_date(date, 'DD/MM/YYYY HH24:MI:SS') = timestamp'2012-01-01 10:00:00'

答案 1 :(得分:0)

我知道这是一个旧帖子,但它是谷歌的最佳结果,所以更新它可能比开始一个更好 - 特别是我已经解决了我的问题。我的查询(hsqldb版本2.3.2)存在很大问题,其中我的日期是在java中创建的字符串,并在数据库中存储为varchar。

to_date调用在没有强制转换的情况下无效,文档对如何正确进行转换有点模糊(我认为varchar强制转换需要指定实际长度虽然情况似乎并非如此。

select * from table2 where to_date(cast(timestamp as VARCHAR(254)), 'YYYY-MM-DD') > to_date('2015-09-02', 'YYYY-MM-DD')

注意演员阵容(xxx为VARCHAR(254))那里!