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')
“日期”列是 VARCHAR/STRING
由于 to_date 在 HSQL 中不起作用,如何使上述查询在 HSQL 中起作用?
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'
我知道这是一个旧线程,但它是谷歌的顶级结果,所以更新它可能比开始一个新线程更好 - 特别是我已经解决了我的问题。我对这个查询(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 as VARCHAR(254))!